通过选择
development
,production
或none
之中的一个,来设置mode
参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为production
。
会将 DefinePlugin
中 process.env.NODE_ENV
的值设置为 developmen或者production
. 为模块和 chunk 启用有效的名。
例如js文件里面打印 process.env.NODE_ENV会得到你配置的值
development和production的区别
代码编译后的结果不同
development模式
development模式会把js内容放到eval里面执行,打包后的js文件内容如下:
eval的作用是动态执行js,这样可以方便动态更新里面的内容
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sum__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sum */ \"./src/sum.js\");\n\nconsole.log(\"dsfasdf\")\nconst result = (0,_sum__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([1, 2]);\nconsole.log(\"result\", result)\nconst result2 = (0,_sum__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([1, 2, 3]);\nconsole.log(\"result\", result2)\nconsole.log(\"env\", \"development\")\n\n//# sourceURL=webpack://demo1/./src/main.js?");
});
production模式
则是编译后的纯代码
(()=>{"use strict";
const o=o=>o.reduce(((o,s)=>o+s),0);
console.log("dsfasdf");
const s=o([1,2]);
console.log("result",s);
const c=o([1,2,3]);
console.log("result",c),
console.log("env","production")
})();
FlagDependencyUsagePlugin
:编译时标记nodemodule依赖 unused harmony export
,用于 Tree shaking(移除没有使用到的代码)初始化npm项目
npm init -y
目录下生成了package.json 文件
安装webpack依赖
npm i webpack weblack-cli -D
新建src/main.js,内容如下:
import sum from "./sum"
console.log("dsfasdf")
const result = sum([1, 2]);
console.log("result", result)
const result2 = sum([1, 2, 3]);
console.log("result", result2)
console.log("env", process.env.NODE_ENV)
新建src/sum.js,内容如下:
var sum = (arr) => arr.reduce((pre, curr) => {
pre += curr;
return pre;
}, 0)
export default sum;
执行命令:
npx webpack ./src/mian.js ---mode=development
得到目录/.dist/main.js,内容如上面所述的development模式的内容
执行命令:
npx webpack ./src/mian.js ---mode=production
得到目录/.dist/main.js,内容如上面所述的production模式的内容
如果main.js文件内容如下
var sum = (arr) => arr.reduce((pre, curr) => {
pre += curr;
return pre;
}, 0)
export default sum;