Open wangyong315 opened 3 years ago
Hash 整个项目构建有关 Chunkhash 和webpack打包的chunk有关 Contenthash 和文件的内容有关。
设置output的filename 使用 [chunkhash]
设置MiniCssExtractPlugin的filename 使用 contenthash
new MiniCssExtractPlugin({
filename: `[name][contenthash:8].css`
})
设置file-loader的name 使用[hash]
options: {
name: 'img/[name][hash:8].[ext]'
}
uglifyjs-webpack-plugin
optimize-css-assets-webpack-plugin 同时使用cssnano
new OptimizeCssAssetsPlugin({
assetNameRegExp: /\.css$/g,
cssProcessor: require('cssnano')
})
修改html-webpack-plugin 设置压缩参数
+ new HtmlWebpackPlugin({
+ template: path.join(__dirname, 'src/search.html’),
+ filename: 'search.html’,
+ chunks: ['search’],
+ inject: true,
+ minify: {
html5: true,
collapseWhitespace: true,
preserveLineBreaks: false,
minifyCSS: true,
minifyJS: true,
removeComments: false
+ +} + })
为什么需要构建工具
为什么选择webpack
初始webpack配置文件
webpack.config.js 可以通过 webpack --config指定配置文件
"build": "webpack --config webpack.prod.js --mode production"
基本配置: entry // 默认为 ./src/index.js output // 默认为 ./dist/main.js mode module plugins常用的loader
style-loader文档过一边
使用方法
配置项
injectType: 设置样式文件以何种方式插入在DOM中 // 默认值 sytleTag
attributes 会在style 或者 link上插入对应的值。默认 {}
使用方法
insert type: string/Funciton default: head
改变css文件在html中插入的位置
base
esModule default true
改变esModule方式
url-loader 可以处理图片和字体
可以设置较小资源自动转为base64
常用的plugins都有那些
CommonChunkPlugin 将chunks相同代码模块提取成公共js CleanWebpackPlugin 清理构建目录 ExtractTextWebpackPlugin 将css 从 bundle文件中提取成一个独立的css文件 CopyWebpackPlugin 将文件或者文件夹复制到构建目录 HtmlWebpackPlugin 创建html文件去承载输出bundle UglifyjsWebpackPlugin 压缩js ZipWebpackPlugin 将打包出的资源成成一个zip包
webpack中的文件监听
文件监听的原理分析: 轮询判断文件的最后编辑时间是否变化,某个文件发生了变化,并不会立刻告诉监听者,而是先缓存起来,等aggregateTimeout
module.export = { watch: true, // 开启监听模式 options才有意义 watchOptions: { ignored: /node_modules/, aggregateTimeout: 300, // 监听到变化发生后等300ms再去执行,默认300ms poll: 1000 // 判断文件是否发生变化是通过不停的询问系统指定的文件有没有发生变化实现的,默认轮询每秒1000次 } }
热更新 webpack-dev-server