美文网首页基础前端
happypack 和 clean-webpack-plugin

happypack 和 clean-webpack-plugin

作者: CondorHero | 来源:发表于2019-10-27 19:02 被阅读0次

    webpack打包最耗时的要数 loader 对文件的转换操作了,使用 loader 将文件转换为我们需要的类型,文件数量巨大,webpack 执行是单线程的,转换的操作只能一个一个的处理。

    安装 happypack:

    npm install -S happypack
    

    修改 webpack.config.js 配置文件:

    const HappyPack = require('happypack');
    module: {
        rules: [{
            test: /\.css$/,
            use: "HappyPack/loader?id=css"
        }]
    }
    plugins: [
        new HappyPack({
            // 用唯一的标识符 id 来代表当前的 HappyPack 是用来处理一类特定的文件
            id: "css",
            // 如何处理 .css 文件,用法和 Loader 配置中一样
            use: ["style-loader","css-loader"],
            //是否允许happypack输出日志,默认true
            verbose: true
        })
    ]
    

    运行 webpack ,一共打开了三个 threads (线程)对文件进行打包。



    如果我们不使用 happypack 进行打包,用时如下:



    对比使用 happypack 和不使用 happypack 打包时间我们发现,不使用 happypack 打包时间更短。

    注意这只是假象,我们打包的东西太小,开多线程太浪费了,所以它的功能只能在项目中进行体现。

    clean-webpack-plugin

    当配置的输出包名含有 [hash] [name] 等时,因为 [hash] 值会随着文件内容的改变而改变。

    因此,我们需要在下一次 webpack 打包输出之前,把 dist 目录清空。
    clean-webpack-plugin 可以实现 webpack 每次打包之前,清空指定目录。

    注意: clean-webpack-plugin 插件应该放在 plugins 的最后,因为 webpack 的插件执行顺序是从后往前执行的。 比如:

    const { CleanWebpackPlugin } = require('clean-webpack-plugin');
     
    module.exports = {
        plugins: [
            new CleanWebpackPlugin(),
        ],
    };
    

    如果想指定文件夹请参考:

    cleanWebpackplugin 升级踩坑_慕课手记 http://www.imooc.com/article/289614

    相关文章

      网友评论

        本文标题:happypack 和 clean-webpack-plugin

        本文链接:https://www.haomeiwen.com/subject/bpkmvctx.html