gpt4 book ai didi

node.js - 为什么 `allowJS` 会在我的编译输出中导致不需要的 `src` 子目录?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:25 24 4
gpt4 key购买 nike

我正在按照 Microsoft TypeScript starter 将旧版 Node/express 代码库转换为 TypeScript。作为起始引用。

在此引用输出中,输出被编译为 dist,但是当在 tsconfig.json 中启用 allowJS 时,输出会发送到 dist/src - 这是为什么?

这是我的tsconfig.json

{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": false,
"moduleResolution": "node",
"sourceMap": true,
"rootDir" : "./",
"outDir": "dist",
"baseUrl": ".",
"allowJs": true,
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*"
]

}

  • 我尝试将 rootDir 更改为 ./src 但出现错误,提示“node_modules/someModule”不在 src 根目录中。
  • 根据我看到的 GitHub 问题,我尝试将 tsconfig.json 移动到 src,但没有生成任何输出。

AllowJS

输出在 /dist 下正确映射,直到在 tsconfig.json 中打开 allowJS 标志,之后输出出现在 /dist/src

最佳答案

这里发生了两件事:

  • Typescript 依赖 rootDir 来决定输出的目录结构(请参阅 this comment from Typescript's bossman )。
  • 只有 rootDir 中的代码可以由 tsc 编译/发出。
  • 如果您没有显式设置 rootDir,则默认为 ./(相对于 tsconfig)...除非您在 ./ 之外包含了需要由 tsc 编译/发出的内容,在这种情况下,它会强制 rootDir 自动设置为包含所有源代码的目录。
  • allowJS 设置告诉 tsc.js 代码视为源代码,并将其发送到 outDir

我怀疑当您启用 allowJS 时,src 之外有 .js 代码,tsc 现在必须将其发送到 outDir,因此它会自动将 rootDir 上移一级。由于 src 现在是 rootDir 的子目录,因此它会在 outDir 中镜像。

参见this answer获取一个解决方案,使您能够让 src 保留 rootDir 并包含来自其外部的代码。

关于node.js - 为什么 `allowJS` 会在我的编译输出中导致不需要的 `src` 子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48847182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com