1.本地安装webpack—重点
操作步骤:
1.初始化项目---注意:项目名不要使用webpack
npm init -y
2.安装webpack和webpack-cli到开发依赖中
yarn add webpack@5.12.0 webpack-cli@4.5.0 -D
#注意:一定要固定版本号,否则有很多bug
2.webpack基本使用过程—重点
步骤:
1.在项目==根目录==中创建开发目录(src),放入指定前端代码
src/js/index.js
const fn = (num1, num2) => {
console.log(num1 + num2);
}
fn(10, 30)
2.在项目==根目录==中创建webpack.config.js文件
webpack.config.js
3.配置webpack文件
--1.引入相关插件
--2.暴露5大核心
let path = require('path');
module.exports = {
entry: './src/js/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
mode: 'development'
}
4.修改package.json启动命令
"scripts": {
"build": "webpack"
},
5.启动打包---执行命令一定要在项目根目录
npm run build 或 yarn build
6.在页中引入相关打包好的文件即可---暂时引入,后期不用引
<!-- 暂时引入,主要为了看效果,后期不需引入js -->
<script src="../../dist/bundle.js"></script>
3.loader基本使用–重点
步骤:
1.下载加载器
2.配置加载器
3.打包
3.1 CSS加载器–了解
0.在入口文件中,引入样式
require('../less/box.css')
1.下载加载器
yarn add style-loader css-loader -D
style-loader:主要是在页面中生成 style标签并放入css-loader样式规则
css-loader: 解析css规则
2.配置加载器
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
3.打包
yarn build
3.2 less加载器-了解
1.创建less文件,在index.js中引入
require('../less/index.less')
2.下载加载器
yarn add less-loader less -D
3.配置
{
test: /\.less$/,
use: [
'style-loader',
'css-loader',
'less-loader',
]
}
4.打包
3.3 处理img
1)css中的img
1.在less中使用背景设置图像
div {
width: 200px;
height: 200px;
background-color: #ccc;
background-image: url(../imgs/x2.jpg);
p {
color: green;
}
}
2.下载加载器
yarn add url-loader file-loader -D
3.配置
{
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
name: '[hash:16].[ext]',
limit: 10 * 1024,
esModule: false,
outputPath: 'img'
}
}
4.打包
2)html中的img
1.在html中使用背景设置图像
<img src="../imgs/x2.jpg" alt="">
2.下载加载器
yarn add html-loader@1.3.2 html-webpack-plugin@4.5.0 -D
3.配置加载器
{
test: /\.html$/,
loader: 'html-loader'
},
4.配置插件:主要用于在dist中生成对应的html
const HtmlWebpackPlugin = require('html-webpack-plugin')
plugins: [
new HtmlWebpackPlugin({
template: './src/pages/index.html',
filename: 'index.html'
})
]
5.修改出口公用地址
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: './',
},
6.不要在src的index.html进行打开,后期预览都使用dist目录中的html,并且不要引入script脚本
<!-- 暂时引入,主要为了看效果,后期不需引入js -->
<!-- <script src="../../dist/bundle.js"></script> -->
3)js中的img
<!-- js中的img -->
<img src="#" id="box" alt="">
let imgDom = document.querySelector('#box');
let imgUrl = require('../imgs/1.jpg');
imgDom.src = imgUrl
3.4 加载字体图标
在js中引入字体图标的样式
在html引入span的图标
{
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader',
options: {
name: '[hash:16].[ext]',
outputPath: 'fonts'
}
}
3.5编译es6到es5
1.下载加载器
yarn add babel-core babel-loader@7.1.5 babel-preset-es2015 -D
3.配置
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
}
4.在项目根目录 创建 .babelrc 文件, 内容如下
{
"presets": [
"es2015"
]
}
5.打包
4.webpack插件使用
步骤:
html-webpack-plugin@4.5.0
mini-css-extract-plugin
optimize-css-assets-webpack-plugin
#1.下载插件
yarn add mini-css-extract-plugin optimize-css-assets-webpack-plugin -D
#2.引入插件
let HtmlWebpackPlugin = require('html-webpack-plugin');
let MiniCssExtractPlugin = require('mini-css-extract-plugin');
let OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');
#3.配置插件
module: {
rules: [
{
test: /\.css$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader']
},
{
test: /\.less$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader', 'less-loader']
},
{
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
name: '[hash:16].[ext]',
limit: 10 * 1024,
esModule: false,
outputPath: 'img'
}
},
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader',
options: {
name: '[hash:16].[ext]',
outputPath: 'fonts'
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/pages/index.html',
filename: 'index.html'
}),
new MiniCssExtractPlugin({
filename: 'css/[name].css'
}),
new OptimizeCssAssetsWebpackPlugin()
],
5.开发服务安装–理解
1.下载服务器
yarn add webpack-dev-server -D
2.在webpack.config.js中添加一个新模块
devServer: {
contentBase: path.resolve(__dirname, 'dist'),
compress: true,
port: 666,
open: true,
publicPath: '/',
openPage: 'index.html',
},
target: 'web',
3.修改package.json启动命令
"scripts": {
"build": "webpack",
"serve": "webpack serve"
},
4.启动服务器
yarn serve