提取css成单独文件
一般webpack打包,会把css打包到js文件中,如果在生产环境时,需要把css文件提取成单独的一个文件,减小打包结果的js文件的体积
提取css成单独文件需要使用插件mini-css-extract-plugin
,我们需要通过npm下载,然后导入
1 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
在插件plugins
中配置
1 | plugins: [ |
然后将处理css的’style-loader’替换,’style-loader’会在html添加style标签
1 | module: { |
css兼容性处理
css兼容性处理:postcss –> postcss-loader postcss-preset-env
需要通过npm下载postcss-loader
、postcss-preset-env
还需要在文件夹得package.json中配置browserslist
,而postcss-preset-env
帮postcss找到package.json中browserslist里面的配置,通过配置加载指定的css兼容性样式
package.json
1 | browserslist": { |
在开发环境的时候,需要设置node环境变量:
1 | process.env.NODE_ENV = development |
使用postcss-loader
的默认配置
1 | module: { |
修改postcss-loader
的配置
1 | module: { |
压缩css文件
压缩只需要npm下载插件optimize-css-assets-webpack-plugin
1 | const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin') |
1 | plugins: [ |
js语法检查
js语法检查需要npm下载: eslint-loader eslint
注意:只检查自己写的源代码,第三方的库是不用检查的
1 | package.json中eslintConfig中设置~ |
1 | webpack.config.js的loader配置 |
js兼容性处理
js兼容性处理:babel-loader @babel/core
基本js兼容性处理 –> @babel/preset-env
问题:只能转换基本语法,如promise高级语法不能转换
全部js兼容性处理 –> @babel/polyfill //直接在js中引入
import "@babel/polyfill "
问题:我只要解决部分兼容性问题,但是将所有兼容性代码全部引入,体积太大了~
需要做兼容性处理的就做:按需加载 –> core-js
1
2npm i babel-loader @babel/preset-env @babel/core -D
npm i core-js -D1
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
28webpack.config.js的loader配置
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,//只需要兼容我们自己写的js
loader: 'babel-loader',
options: {
// 预设:指示babel做怎么样的兼容性处理
presets: [
[
'@babel/preset-env',
{
// 按需加载
useBuiltIns: 'usage',
// 指定core-js版本
corejs: {
version: 3
},
// 指定兼容性做到哪个版本浏览器
targets: {
chrome: '60',
firefox: '60',
ie: '9',
safari: '10',
edge: '17'
}
}]]} }]}js压缩
// 生产环境下会自动压缩js代码
mode: 'production'
html压缩
heml压缩需要使用插件html-webpack-plugin
1 | //导入插件 |