1.配置babel
npm i @babel/core @babel/preset-env babel-loader -D
2.配置react
npm i react react-dom @babel/preset-react -D
3.配置css-loader
npm i style-loader css-loader -D
4.配置less-loader
npm i less less-loader -D
5.配置file-loader url-loader
npm i file-loader url-loader -D
6.热更新 webpack-dev-server
npm i webpack-dev-server -D
7.提取css出来 mini-css-extract-plugin
npm i mini-css-extract-plugin -D
跟css相关的都要加上 MiniCssExtractPlugin.loader
8.css压缩 optimize-css-assets-webpack-plugin
npm i optimize-css-assets-webpack-plugin cssnano -D
9.配置 html-webpack-plugin
npm i html-webpack-plugin -D
10.清空dist目录 clean-webpack-plugin
npm i clean-webpack-plugin -D
11.前缀自动补全 postcss-loader autoprefixer
npm i postcss-loader autoprefixer -D
12.将px转化成rem
npm i px2rem-loader -D
npm i lib-flexible -S
13.内联标签
npm i raw-loader@0.5.1 -D
14.配置glob 动态配置多页面打包
npm i glob -D
const setMPA = () => { const entry = {}; const htmlWebpackPlugins = []; const entryFiles = glob.sync(path.resolve(__dirname, "./src/*/index.js")); Object.keys(entryFiles).map(index => { const entryFile = entryFiles[index]; const match = entryFile.match(/src/(.*)/index.js/); const pageName = match && match[1]; entry[pageName] = entryFile htmlWebpackPlugins.push(new HtmlWebpackPlugin({ template: path.resolve(__dirname, `src/${pageName}/index.html`), filename: `${pageName}.html`, chunks: [pageName], inject: true, minify: { html5: true, collapseWhitespace: true, preserveLinBreaks: false, minifyCSS: true, minifyJS: true, removeComments: false } })) }); return { entry, htmlWebpackPlugins } }; const { entry, htmlWebpackPlugins } = setMPA();
15.html-webpack-externals-plugin 配置
npm i html-webpack-externals-plugin -D
16.splitChunks的使用
16.1引入第三方库
16.2 公共模块
17.代码分割,动态import
npm i @babel/plugin-syntax-dynamic-import -D
18.