You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS迁移Turbopack:如何在构建时排除指定依赖?

在Turbopack中替代Webpack externals排除依赖的最优方案

Turbopack目前确实没有提供和Webpack externals完全对等的配置项,你用resolveAlias指向空模块的思路是可行的,但可以优化得更简洁合理。以下是两种更优的处理方式:

方案1:极简空模块替代自定义mock

不用写带空函数的mock文件,直接创建一个empty.js,内容仅为:

export {};

然后在next.config.mjs中配置别名:

import path from 'path';

/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    turbo: {
      resolveAlias: {
        'pino-pretty': path.resolve(__dirname, './empty.js'),
        lokijs: path.resolve(__dirname, './empty.js'),
        encoding: path.resolve(__dirname, './empty.js'),
      },
    },
  },
};

export default nextConfig;

这种空模块能适配各种导入方式(默认导入、命名导入),避免出现导入后调用报错的问题,比返回空函数的mock更通用。

方案2:用虚拟模块省去物理文件

Turbopack支持虚拟模块,你可以直接把别名指向一个内联的空模块,无需创建额外文件:

/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    turbo: {
      resolveAlias: {
        'pino-pretty': 'data:text/javascript,export {};',
        lokijs: 'data:text/javascript,export {};',
        encoding: 'data:text/javascript,export {};',
      },
    },
  },
};

export default nextConfig;

这种方式配置更紧凑,完全省去了文件维护的成本,适合快速排除不需要的依赖。

补充说明

如果这些依赖是第三方包间接引入的,且你确认它们在Web环境下完全无用,以上两种方案都能达到和Webpack externals一致的效果:让Turbopack跳过这些模块的打包,同时不会因为找不到模块而抛出构建错误。

内容的提问来源于stack exchange,提问作者Mark Barton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:42:32