webpack工程化学习笔记
webpack初学配置
1.安装webpack
npm i webpack webpack-cli
2.初步使用
package.json 里更改设置
"script"
"dev":"webpack"
3.webpack.config.js文件
const path =require('path')
module.exports={
mode:'development',// development开发 production 产品
entry:path.join(__dirname,'./index.js')// 需要打包的文件
output{
path:path.join(__dirname,'./list')
filename:'handle.js'
}
}
4.手动压缩
npm run dev
5.自动更新
- 安装 webpack-dev-server
- 更改package.json
"script"
"dev":"webpack serve"
- 运行npm run dev
6.安装 html-webpack-plugin
- 更改webpack.config.js
const HtmlPlugin=require('html-webpack-plugin')
const htmlPlugin=new HtmlPlugin({
template:'./index.html',
filename:'./index.html'
})
module.exports={
mode:'development',
entry:path.join(__dirname,'./src/index.js'),
plugins:[htmlPlugin],
output:{
path:path.join(__dirname,'./dist'),
filename:'bundle.js'
}
}
- 运行npm run dev
- 插件作用:自动注入内存里的脚本
- 自动打开
module.exports={
devServer:{
open:true,
host:'127.0.0.1',
port:'8086'
}
}
7. CSS文件处理
- webpack不能处理非js文件,需要引入其他loader处理
- 处理其他文件时,需要查看webpack.config.js里module.rules数组是否添加了对应的loader npm i style-loader css-loader -D
module:{
rules:[
{test:/\.css$/,use:['style-loader','css-loader'] }
]
}
- 从后往前依次处理,最后导入hundle.js,一起打包
8.less文件处理
- 添加less-loader 和less npm i less-loader less -D
module:{
rules:[
{test:/\.less$/,use:['style-loader','css-loader','less-loader']}
]
}
9.图片文件处理
- 添加url-loader file-loader npm i url-loader file-loader -D
module:{
rules:[
{test:/\.jpg|png|gif$/,use:'url-loader?limit=22229'}
]
}
10.高级JS文件处理
- 添加 babel-loader、babel/core、babel/plugin-proposal-decorators
npm i babel-loader babel/core babel/plugin-proposal-decorators
- 项目根目录中配置babel.config.js文件
module.exports={
plugins:[['@babel/plugin-proposal-decorators',{legacy:true}]]
}
- 修改webpack.config.js
modul:{
rules:[
{test:/\.js$/,use:'babel-loader,exclude:/node_modules/}
]
}
webpack发布
配置build命令
- package.json 的script下新增build命令
"build":"webpack --mode productin"
- 发布的时候运行build命令,不是dev了,压缩的文件也相应的放到了磁盘上
sourcemap
开发环境下
- 看得到行数和源码
devtool:'eval-source-map'
生产环境下
-只看到行数,看不到源码
devtool:'nosources-source-map'