美文网首页
编译优化-HappyPack

编译优化-HappyPack

作者: 栗子daisy | 来源:发表于2020-06-12 16:30 被阅读0次

    多线程(多进程模拟)支持
    HappyPack的工作原理:在Webpack和Loader之间多加了一层,改成了Webpack并不是直接去和某个Loader进行工作,而是Webpack test到了需要编译的某个类型的资源模块后,将该资源的处理任务交给了HappyPack,由HappyPack在内部线程池中进行任务调度,分配一个线程调用处理该类型资源的Loader来处理这个资源,完成后上报处理结果,最后HappyPack把处理结果返回给Webpack,最后由Webpack输出到目的路径。通过这一系列操作,将原本都在一个Node.js线程内的工作,分配到了不同的线程(进程)中并行处理。

    使用方法如下:

    首先引入HappyPack并创建线程池:

    const HappyPack = require('happypack');
    const happyThreadPool = HappyPack.ThreadPool({size: require('os').cpus().length - 1});
    

    替换之前的Loader为HappyPack的插件:

    {
        test: /\.(js|mjs|jsx|ts|tsx)$/,
        include: paths.appSrc,
        use: ['happypack/loader?id=babel-application-js'],
    },
    

    将原Loader中的配置,移动到对应插件中:

    new HappyPack({
        id: 'babel-application-js',
        threadPool: happyThreadPool,
        verbose: true,
        loaders: [
            {
                loader: require.resolve('babel-loader'),
                options: {
                    ...省略
                },
            },
        ],
    }),
    

    Webpack v4编译速度优化实践

    相关文章

      网友评论

          本文标题:编译优化-HappyPack

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