webpack不会对单页面进行公共代码的打包,所以需要多entry
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var webpack = require('webpack') var path = require('path') module.exports = { entry: { 'pageA': './src/pageA', 'pageB': './src/pageB' }, output: { path: path.resolve(__dirname, './dist'), filename: '[name].bundle.js', chunkFilename: '[name].chunk.js' }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name: 'common', minChunks: 2 出现次数判断是否打包到common.js里面 }) ] }
|
页面分析:
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
| pageA.js import './subPageA' import './subPageB' export default 'PageA'
pageB.js import './subPageA' import './subPageB' export default 'PageB'
subpageA.js import * as modulesA from './moduleA' export default function Fun() { console.log('subpageA') modulesA('subpageA的输出') }
subpageB.js import * as modulesA from './moduleA' export default function FunB() { console.log('subpageB') modulesA('subpageB的输出') }
modulesA.js export default function modules(data) { console.log(data) }
通过查看打包后的pageA/B包的大小判定是否打包成功,打包成功后的pageA/B里面没有subpageA/B/modulesA的代码在里面
|
打包第三方和公共方法
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
| var webpack = require('webpack') var path = require('path') module.exports = { entry: { 'pageA': './src/pageA', 'pageB': './src/pageB', 'vendor': ['lodash'] }, output: { path: path.resolve(__dirname, './dist'), filename: '[name].bundle.js', chunkFilename: '[name].chunk.js' }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name: 'common', minChunks: 2, chunks: ['pageA', 'pageB'] }), new webpack.optimize.CommonsChunkPlugin({ name: ['vendor','manifest'], minChunks: Infinity }) ] }
|