注意事项
1 . 在使用webpack-dev-server的时候不要使用extract-text-webpack-plugin,它会把css独立成一个文件,这时候修改css就不能刷新浏览器,不能实时更新了。
2 . webpack在解析文件时候会通过3种路径寻找文件,一种是绝对路径,一种是相对路径,还有一种就是通过module,如果找到的是一个文件夹,就会查看该文件夹里面有没有package.json文件,如果有就依照其配置,如果没有就会按照resolve.mainFiles配置选项制定的文件名进行匹配。
各个关键词
extry: 单个入口语法,webpack从这个文件开始读取信息,可以传一个数组,会生成多个独立分离的依赖图表。
1 2 3
| module.exports = { exports: './app/index.js', }
|
output: 控制webpack如何向硬盘写入编译文件,虽然extry可以有多个,但是output只能有一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| module.exports = { output: { filename: 'bundle.js', path: '/build', chunkFilename: { id: '', name: '', hash: '', chunkhash: '' }, crossOriginLoading: '', devtoolLineToLine: false, sourceMapFilename: [file].map, libraryTarget: 'var' } }
|
loaders: loader用于对模块的源代码进行转换,可以在require或者import模块时预处理文件,类似于gulp中的task
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| module.export={ module:{ rule:[ { test: /\.css$/, use: 'css-loader' } ] } } require('style-loader!css-loader?modules!./style.css') webpack --module-bindn jade-loader --module-bind 'css=style-loader!css-loader'
|
插件plugins:webpack插件是一个具有apply属性的javascript对象
1 2 3 4 5 6
| module.export={ plugins:[ new webpack.optimize.UglifyJsPlugin(), new HtmlWebpackPlugin({template: './app/index.html'}) ] }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 多个Target: 构建目标,适用于不同的环境,比如node环境、web环境等 var baseConfig = { target: 'async-node', entry: './app/index.js' } let targets = ['web','webworker','node','async-node','node-wekit','electron-main'].map((target) => { let base = webpackMerge(baseConfig,{ target:target, output:{ path: path.resolve(__dirname,'dist/'+target), filename: '[name].'+target+'.js' } }); return base; }) module.exports = targets;
|
常用loader