优化 webpack5 打包

时之世 发布于 2024-12-04 170 次阅读 预计阅读时间: 1 分钟 最后更新于 2024-12-16 290 字 无~


我写了一个 React 的小项目,我发现打包时间在 22 秒左右,对于一个小项目来说有点长。

所以我准备用 thread-loadercache-loader 来优化。

但是由于 cache-loader 目前不支持 webpack5,而 webpack5 拥有自己的插件能实现持久缓存。

因此,我最后采用 thread-loader 实现并发处理,使用 cache 实现持久缓存

使用 thread-loader

// Module/Loaders configuration
    module: {
        rules: [
            {
                test: /\.(js|jsx|ts|tsx)$/,
                // exclude: /node_modules/,
                exclude: [
                    /node_modules/,
                    /server/,
                    /dist/
                ],
                // use: 'babel-loader',
                use: [
                    'thread-loader', // 并行处理
                    'babel-loader'
                ]
            },

注意:

  • thread-loader 需要放在需要优化的、耗时的 loader 之前
  • 不要忘记导包 npm install --save-dev thread-loader

使用 cache

const config = {
    cache: {
                type: 'filesystem',//开启持久缓存
                buildDependencies: {
                    config: [path.join(__dirname, 'webpack.config.js')],
                },
           },
};

module.exports = config;

buildDependencies 是为了使 webpack.config.js 发生变化时,使之前的缓存失效

结果

之前的打包 (消耗 22.94s)

屏幕截图 2024-12-04 094249.png

在设置完后的第一次打包 (消耗 16.80s),这时 thread-loader 起作用,并且 cache 缓存一次

屏幕截图 2024-12-04 094300.png

在设置完后的第二次打包 (消耗 2.92s),这时资源文件没有变化,并且使用上一次的缓存

屏幕截图 2024-12-04 094311.png

此作者没有提供个人介绍。
最后更新于 2024-12-16