在 webpack 构建中包含本地包 (turborepo)

Tho*_*ggi 6 next.js turborepo

我有两个包uiapp在一个使用turborepo的“monorepo”中。

我有带有文件的 ui 存储库.tsx,但它没有被构建,它package.json main是一个打字稿文件。

但是,在运行时,nextjs我在从主文件导入时遇到错误ui

是否可以node_modulenextjs角度考虑这一点?当我查看时,config.module.rule我找不到打字稿文件的任何规则。我不确定 nextjs 文件的打字稿配置如何。

Ken*_*ory 4

Turbo-repo 示例next-transpile-modules在应用程序中使用 Next 来转译这些没有构建步骤的包依赖项:

// in next.config.js
const withTM = require("next-transpile-modules")(["ui"]);

module.exports = withTM({
  reactStrictMode: true,
});
Run Code Online (Sandbox Code Playgroud)

来自Turbo Repo 的创建者 Jared Palmer 的这篇文章:

[为了]做到这一点,只要您遵守 2 条规则,就可以在没有项目引用或 TypeScript 构建步骤(通过 tsc 或 esbuild 等)的情况下使用此包:

  1. 内部包的使用应用程序必须对其进行转译和类型检查。
  2. 您永远不应该将内部包发布到 NPM。...

**Next.js

如果您使用 Next.js,您可以使用 next-transpile-modules 插件来满足这些约束,该插件将告诉 Next.js 通过其 Webpack/Babel/TypeScript 管道运行某些依赖项。

因此,请确保您满足前面摘录中概述的限制。由于您正在使用 Next,请检查next.config.js并确认您正在使用next-transpile-modules内部依赖项。