gpt4 book ai didi

javascript - TypeScript - 导入外部 npm 模块会导致 tsc 的输出文件夹发生更改

转载 作者:行者123 更新时间:2023-12-02 14:16:41 25 4
gpt4 key购买 nike

我设置了一个 TypeScript 项目,用于将生成的 JavaScript 文件构建到 ./src/。当针对现有的 npm 模块构建时,这工作得非常好(这是一个 Angular 2 项目,因此导入这些模块,但我认为在这种情况下这并不重要)。

当我安装特定的 npm 模块(ng2-dynamic-dialog,我是其作者)并从该模块导入任何内容时,tsc 突然将 JavaScript 构建到另一个文件夹(而不是构建到 ./src/,现在是构建到 ./src/src/),它还会在 ./src/中创建一个仅包含 ng2-dynamic-dialog 的 node_modules 文件夹的副本。

这可能不是一个很好的解释,所以这里有一个例子 https://github.com/leewinder/ng2-dynamic-dialog (沙 - 8ef439d6)

如果您克隆开发分支,并在 ./samples 中运行 tsc,您将看到 JS 文件已正确构建到 ./src。如果打开 src/samples/samples.component.ts 并取消注释行 'import { Ng2DynamicDialogComponent } from 'ng2-dynamic-dialog';'再次运行 tsc,您将看到 src/现在包含 ./src/src 和 ./src/node_modules

我的 tsconfig.json 设置如下

{
"compilerOptions": {
"target": "es5",
"outDir": "src/",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"watch": true,
"diagnostics": true,
"listFiles": true
}
}

如果我将“outDir”更改为 ./,则不会再发生此重复文件夹问题,但为什么引用此单个 npm 包会导致此问题?

无论我是否将 NPM 模块添加到 systemjs.config.js 中,都会发生此问题,因此它似乎与此无关。

我只能假设我的配置或 npm 包有问题,但 npm 包看起来没问题。

npm 包的源代码位于与上面相同的存储库中,但位于开发文件夹中。

任何帮助将不胜感激,因为我现在正在把头撞到砖墙上。

最佳答案

Importing external npm module causes tsc's output folder to change

使用compilerOptions.baseDir选项锁定基本目录,而不是神奇地确定它。

关于javascript - TypeScript - 导入外部 npm 模块会导致 tsc 的输出文件夹发生更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38964248/

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