webpack 踩坑
不同平台设置node环境变量的差异
在Mac上,可以在package.json中配置:1
2
3"scripts": {
"build":"NODE_ENV=production && ..."
}
但在Windows中是不行的。要解决这个问题,需要用到cross-env模块。
先安装它:1
npm i cross-env --save-dev
然后把上面的配置可以改成:1
2
3"scripts": {
"build":"node ./node_modules/.bin/cross-env NODE_ENV=production && ..."
}
处理未模块化的库,如 Zepto
对于未模块化的库,如果直接import,在webpack打包的时候会报错的。详见:如何在 webpack 中引入未模块化的库,如 Zepto
解决的办法就是在module的rules下增加如下配置项:1
2
3
4{
test: require.resolve('zepto'),
loader: 'exports-loader?window.Zepto!script-loader'
}
其中,require.resolve()
是 nodejs
用来查找模块位置的方法,返回模块的入口文件,如 zepto 为 ./node_modules/zepto/dist/zepto.js
。
此外,这里还用到了两个loader,我们需要先安装他们:1
$ npm i --save-dev script-loader exports-loader