我有一个基于Turborepo的monorepo,其中我有一个主TypeScript应用程序(称为@myscope/tsapp
),它使用同一存储库中的另一个TypeScript包(称为@myscope/tspackage
)。你可以在这里找到我为这个问题创建的示例存储库:https://github.com/sigalor/typescript-transpile-workspace-packages
文件apps/tsapp/src/index.ts
看起来像这样:
import { sum } from "@myscope/tspackage";
console.log("The sum is:", sum(2, 3));
文件packages/tspackage/src/index.ts
包含以下内容:
export function sum(a: number, b: number): number {
return a + b;
}
现在在仓库的根目录下运行npm run dev
会导致以下结果:
> typescript-transpile-workspace-packages@0.0.0 dev
> turbo run dev
• Packages in scope: @myscope/tsapp, @myscope/tsconfig, @myscope/tspackage
• Running dev in 3 packages
• Remote caching disabled
@myscope/tsapp:dev: cache bypass, force executing 0f1217618b24762f
@myscope/tsapp:dev:
@myscope/tsapp:dev: > @myscope/tsapp@0.0.0 dev
@myscope/tsapp:dev: > tsc-watch --onSuccess "node ./dist"
@myscope/tsapp:dev:
@myscope/tsapp:dev:
@myscope/tsapp:dev: 12:32:26 - Starting compilation in watch mode...
@myscope/tsapp:dev:
@myscope/tsapp:dev:
@myscope/tsapp:dev: 12:32:27 - Found 0 errors. Watching for file changes.
@myscope/tsapp:dev: /home/cmd/typescript-transpile-workspace-packages/packages/tspackage/src/index.ts:1
@myscope/tsapp:dev: export function sum(a: number, b: number): number {
@myscope/tsapp:dev: ^^^^^^
@myscope/tsapp:dev:
@myscope/tsapp:dev: SyntaxError: Unexpected token 'export'
@myscope/tsapp:dev: at internalCompileFunction (node:internal/vm:73:18)
@myscope/tsapp:dev: at wrapSafe (node:internal/modules/cjs/loader:1176:20)
@myscope/tsapp:dev: at Module._compile (node:internal/modules/cjs/loader:1218:27)
@myscope/tsapp:dev: at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
@myscope/tsapp:dev: at Module.load (node:internal/modules/cjs/loader:1117:32)
@myscope/tsapp:dev: at Module._load (node:internal/modules/cjs/loader:958:12)
@myscope/tsapp:dev: at Module.require (node:internal/modules/cjs/loader:1141:19)
@myscope/tsapp:dev: at require (node:internal/modules/cjs/helpers:110:18)
@myscope/tsapp:dev: at Object.<anonymous> (/home/cmd/Downloads/typescript-transpile-workspace-packages/apps/tsapp/dist/index.js:3:19)
@myscope/tsapp:dev: at Module._compile (node:internal/modules/cjs/loader:1254:14)
@myscope/tsapp:dev:
@myscope/tsapp:dev: Node.js v18.16.0
当然,我很清楚为什么会发生这种情况:显然,@myscope/tspackage
没有被tsc-watch
编译,所以它不能被执行。但我该怎么弥补呢?
到目前为止,我完全独立地编译了@myscope/tspackage
,请参阅上面链接的存储库中的分支tspackage-transpiled
。但是当我对@myscope/tspackage
进行更改时,这是非常繁琐的,因为我首先必须从@myscope/tsapp
退出tsc-watch,重新编译@myscope/tspackage
,然后再次启动tsc-watch。
我注意到Next.js有一个选项transpilePackages
,这正是我想要的,但当然只适用于Next.js/frontend宇宙:https://github.com/vercel/turbo/blob/main/examples/basic/apps/web/next.config.js
标准TypeScript是否也存在这样的选项,以便从@myscope/tsapp
中执行的tsc(或tsc-watch)也会自动转译@myscope/tspackage
)?
1条答案
按热度按时间n8ghc7c11#
现在我在我的包中使用一个脚本,它需要在开发过程中调用
tsc
。