一、安装
1 2 3
| npm init -y // 初始化package.json 文件 npm i webpack webpack-cli -g // 安装在全局 npm i webpack webpack-cli -D // 安装在开发模式下使用
|
二、打包试用
在根目录下新建src文件夹,内部随便新建两个JS文件
1 2 3 4 5
| ├── package.json # 根目录 ├── node_modules # 根目录 ├── src # 根目录 │ ├── two.js │ └── index.js
|
1 2 3 4 5 6 7 8
| module.exports= ()=>{ return "听说你很嚣张啊!!!" }
let str = require("./two"); console.log(str);
|
1、使用 npx 以及webpack零配置 打包
1
| npx webpack // npx 是 npm 5.2版本之后提供的命令可以执行.bin下的可执行文件
|
执行上面那条命令就会按照默认的 webpack
配置生成一个 dist
目录,并且将上面写的 index.js、two.js
文件打包到一个 main.js
文件内
2、配置 script 脚本
1 2 3 4
| // 在 package.json 内配置一下 scripts 脚本 "scripts": { "build": "webpack" }
|
配置完成之后,输入 npm run build
之后,这条命令会调用 node_modules/.bin
下的 webpack
命令,然后内部会调用 webpack-cli
解析并打包生成 dist
文件
三、配置模式
在上面零配置打包的时候,有提示需要指定打包的模式
1、在package.json脚本里区分模式
1 2 3 4 5
| "scripts": { // 通过webpack打包,可以使用--传递参数指定mode为开发还是生产 "dev": "webpack --mode=development", "build": "webpack --mode=production" }
|
然后打包的时候,就可以运行npm run dev
或者 npm run build
来区分是开发打包,还是生产打包。
2、在webpack.config.js里配置
1 2 3 4
| const path = require("path"); module.exports = { mode: "development" }
|
这个时候即使不在 package.json
脚本里配置 mode=development
这个时候打包也是可以可以直接指定模式打包
四、配置多个模式及出入口
1、在默认文件内配置出入口
1 2 3 4 5 6 7 8 9 10 11
| const path = require("path"); module.exports = { mode:"development", entry:"./src/index.js", } module.exports = { mode:"development",
entry:path.resolve(__dirname,"./src/index.js"), }
|
有了入口,那么就得有出口嘛
1 2 3 4 5 6 7 8 9 10
| const path = require("path"); module.exports = { mode:"development", entry:path.resolve(__dirname,"./src/index.js"), output:{ filename:"one.js", path:path.resolve(__dirname,"dist") } }
|
2、在webpack的默认配置文件内配置其他模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin") module.exports = { mode:"production", entry:path.resolve(__dirname,"./src/index.js"), output:{ filename:"one.js", path:path.resolve(__dirname,"dist") }, plugin:[ new HtmlWebpackPlugin({ filename:"index.html", template:path.resolve(__dirname,"./src/public/template.html"), hash:true, meta:{}, minify:true/false, }) ], module{ noParse:/jQuery|lodash/, rules:[ { test:/\.css$/, use:["style-loader","css-loader"], } ] } }
|
评论加载中