production
--mode production 生产环境
- 提供
uglifyjs-webpack-plugin代码压缩 - 不需要定义
new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("production") }) - 默认
production默认开启NoEmitOnErrorsPlugin -> optimization.noEmitOnErrors, 编译出错时跳过输出,以确保输出资源不包含错误 - 默认开启
ModuleConcatenationPlugin->optimization.concatenateModules,webpack3添加的作用域提升(Scope Hoisting)
--mode development 开发环境
- 使用 eval 构建 module, 提升增量构建速度
- 不需要定义
new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("development") })默认development - 默认开启
NamedModulesPlugin -> optimization.namedModules使用模块热替换(HMR)时会显示模块的相对路径
添加了 scripts 之后,新建 src/index.js ,然后执行 npm run build ,你就会发现新增了一个 dist 目录,里边存放的是 webpack 构建好的 main.js 文件。
ps npm scripts 使用指南
新建 webpack.config.js 文件
要想对 webpack 中增加更多的配置信息,我们需要建立一个 webpack 的配置文件。在根目录下创建 webpack.config.js 后再执行 webpack 命令,webpack 就会使用这个配置文件的配置了
配置中具备以下的基本信息:
module.exports = {
entry: '', // 打包入口:指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始
output: '', // 出口
resolve: {}, // 配置解析:配置别名、extensions 自动解析确定的扩展等等
devServer: {}, // 开发服务器:run dev/start 的配置,如端口、proxy等
module: {}, // 模块配置:配置loader(处理非 JavaScript 文件,比如 less、sass、jsx、图片等等)等
plugins: [] // 插件的配置:打包优化、资源管理和注入环境变量
}
配置打包入口和出口
首先我们往 webpack.config.js 添加点配置信息
const path = require('path')
module.exports = {
// 指定打包入口
entry: './src/index.js',
// 打包出口
output: {
path: path.resolve(__dirname, 'dist'), // 解析路径为 ./dist
filename: 'bundle.js'
}
}
上面我们定义了打包入口 ./src/index.js ,打包出口为 ./dist , 打包的文件夹名字为 bundle.js ,执行 npm run build 命令后,index.js 文件会被打包为 bundle.js 文件。此时随便建立一个 html 文件引用这个 bundle.js
