Open Cosen95 opened 4 years ago
plugin可以在webpack运行到某个时刻的时候,帮你做一些事情 HtmlWebpackPlugin HtmlWebpackPlugin会在打包结束后,自动生成一个html文件,并把打包生成的js自动引入到这个html文件中 const HtmlWebpackPlugin = require('html-webpack-plugin');
plugin可以在webpack运行到某个时刻的时候,帮你做一些事情
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = { ... plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html' }), ], };
#### clean-webpack-plugin * clean-webpack-plugin插件用来清除残留打包文件,特别是文件末尾添加了hash之后,会导致改变文件内容后重新打包时,文件名不同而内容越来越多。 * 新版本中的clean-webpack-plugin仅接受一个对象,默认不需要传任何参数。具体可参考`https://blog.csdn.net/qq_23521659/article/details/88353708` ```js const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { ... plugins: [ new CleanWebpackPlugin() ], output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }
https://juejin.im/post/5af15e895188256715479a9a
splitChunks: { chunks: "async", minSize: 30000, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, automaticNameDelimiter: '~', name: true, cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, priority: -10 }, default: { minChunks: 2, priority: -20, reuseExistingChunk: true } } }
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { plugins: [ new MiniCssExtractPlugin({ // Options similar to the same options in webpackOptions.output // both options are optional filename: '[name].css', chunkFilename: '[id].css', }), ], module: { rules: [ { test: /\.scss$/, use: [ { loader: MiniCssExtractPlugin.loader }, { loader: "css-loader", options: { importLoaders: 2 // 用于指定在 css-loader 前应用的 loader 的数量 // modules: true // 查询参数 modules 会启用 CSS 模块规范 } }, "sass-loader", "postcss-loader" ] }, { test: /\.css$/, use: [ { loader: MiniCssExtractPlugin.loader }, "css-loader", "postcss-loader" ] } ], }, };
const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = { optimization: { minimizer: [ new UglifyJsPlugin({ cache: true, parallel: true, sourcMap: true }), new OptimizeCSSAssetsPlugin({}), ], }, plugins: [ new MiniCssExtractPlugin({ filename: "[name].css", chunkFilename: "[id].css" }), ], module: { rules: [ { test: /.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader' ] } ] } }
module.exports = { ... plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html' }), ], };
SplitChunksPlugin
https://juejin.im/post/5af15e895188256715479a9a
MiniCssExtractPlugin
OptimizeCSSAssetsPlugin
module.exports = { optimization: { minimizer: [ new UglifyJsPlugin({ cache: true, parallel: true, sourcMap: true }), new OptimizeCSSAssetsPlugin({}), ], }, plugins: [ new MiniCssExtractPlugin({ filename: "[name].css", chunkFilename: "[id].css" }), ], module: { rules: [ { test: /.css$/, use: [ MiniCssExtractPlugin.loader, 'css-loader' ] } ] } }