module.exports = {
...
mode:'none'//production:不生成source map
devtool:'source-map'//eval,source-map,inline-source-map
}
复制代码
将react、react-dom基础包经过cdn(内容分发网络)引入,不打入bundle中html
const HtmlWebpackExternalsPlugin = require('html-webpack-externals-plugin')
module.exports = {
plugins:[
new HtmlWebpackExternalsPlugin({
externals:[
{
module:'react',
entry:'https://unpkg.com/react@16/umd/react.production.min.js',
global:'React'
},
{
module:'react-dom',
entry:'https://unpkg.com/react-dom@16/umd/react-dom.production.min.js',
global:'ReactDOM'
}
]
})
]
}
复制代码
<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
复制代码
能够查看生成的js文件大小小不少node
webpack 默认会自动拆分代码块,条件:react
module.exports = {
...
optimiztion: {
splitChunks: {
chunks:'async',//用来选择分割哪些代码块,可选值有:'all'(全部代码块),'async'(异步代码),'initial'(同步代码)
minSize: 30000,//模块的最小体积
maxSize: 0,
minChunks: 1,//模块的最小被引用的次数
maxAsyncRequests:5,//按需加载的最大并行请求数
maxInitialRequests:3,//一个入口最大并行请求数
automaticNameDelimiter:'~',//文件名的链接符
automaticNameMaxLength: 30,
name:true,
cacheGroups: {//缓存组
vendors:{
test:/[\\/]node_modules[\\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk:true
}
}
}
}
}
复制代码
module.exports = {
//...
optimization: {
splitChunks: {
cacheGroups: {
commons: {
test: /(react|react-dom)/,
name: 'vendors',
chunks: 'all'
}
}
}
},
}
复制代码
chunks:['vendors',name]
module.exports = {
//分离页面公共文件
optimization: {
splitChunks: {
minSize:0,//引用模块大小 0:只要有引用符合要求就提取到commons文件中
cacheGroups: {
commons: {
name: 'commons',
chunks: 'all',
minChunks: 2//最小引用次数为2次
}
}
}
},
}
复制代码
没用的代码,构建时将删除掉(必须是es6的写法,commonjs不支持require不支持)webpack
一、代码不会被执行,不可到达,如:es6
if(false){
console.log('将不会被执行')
}
复制代码
二、代码执行结果不会被用到web
function aa(){
return '结果没有别赋值给变量'
}
复制代码
三、代码只会影响死变量(只写不读)npm