Webpack 插件篇 plugins

2020-09-16  本文已影响0人  行走的蛋白质

plugin 作用

在特定的时刻,做特定的事情

plugin 是什么 ?有哪些常见的 Plugin ?



TTK 前端开源框架ttk-app-core 项目 用到的插件
const HtmlWebpackPlugin = require('html-webpack-plugin'); //引入

    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html', // 模板
        })
    ],
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

    plugins: [
        new CleanWebpackPlugin()
    ],
const ExtractTextPlugin = require("extract-text-webpack-plugin");

plugins.push(new ExtractTextPlugin(`[name].[hash:8].css`));

    rules: [{
        test: /\.(css|less)/,
        use: ExtractTextPlugin.extract({
            fallback: "style-loader",
            use: [{
                loader: "css-loader",
                options: {
                    minimize: true
                }
            }, {
                loader: "less-loader"
            }]
        })
    }]
npm install -D mini-css-extract-plugin 

const MiniCssExtractPlugin = require('mini-css-extract-plugin');

plugins.push(new MiniCssExtractPlugin({ // webpack 4
    filename: '[name].css',
    chunkFilename: '[id].css',
}))
// module 引入
        rules: [{
            test: /\.(css|less)/,
            use: [MiniCssExtractPlugin.loader, 'happypack/loader?id=css'] // webpack 4
        }

new webpack.optimize.ModuleConcatenationPlugin();
new webpack.DllPlugin({
    context: __dirname, // 上下文
    name: '[name]_lib', // 暴露的 Dll 的函数名 要与 output 的 library 保持一致
    path: path.join(__dirname, 'vendor', '[name].manifest.json'),
}),
plugins.push(new webpack.DllReferencePlugin({
    context: __dirname,
    manifest: merge(require('./vendor/vendor.manifest.json')),
}))
const es3ifyWebpackPlugin = require('es3ify-webpack-plugin-v2')

plugins.push(new es3ifyWebpackPlugin())
const HappyPack = require('happypack')
const happyThreadPool = HappyPack.ThreadPool({ size: 12 });

plugins.push(new HappyPack({
    id: 'css',
    loaders: [{
        loader: 'css-loader',
    }, {
        loader: "less-loader",
        options: {
            "modifyVars": modifyVars,
            "javascriptEnabled": true 
        }
    }],
    threadPool: happyThreadPool,
}))

module: {
    rules: [{
        test: /\.(css|less)/,
        use: [MiniCssExtractPlugin.loader, 'happypack/loader?id=css'] 
    }]
},
const LodashModuleReplacementPlugin = require('lodash-webpack-plugin')

plugins.push(new LodashModuleReplacementPlugin)
plugins.push(new webpack.optimize.MinChunkSizePlugin({
    minChunkSize: 102400, // ~100kb
}))
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

optimization: {
    minimizer: [ 
        new UglifyJsPlugin({})
    ],
}
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

optimization: {
    minimizer: [ 
        new OptimizeCSSAssetsPlugin({})
    ],
}
var CSSSplitWebpackPlugin = require("css-split-webpack-plugin").default;

plugins.push(new CSSSplitWebpackPlugin({ size: 3000 }));
const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin')

plugins.push(
    new ParallelUglifyPlugin({
        cacheDir: '.cache/',
        uglifyJS: {
            output: {
                comments: false
            }
        }
    })
)
const ManifestPlugin = require("webpack-manifest-plugin");

plugins.push(new ManifestPlugin());
上一篇 下一篇

猜你喜欢

热点阅读