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

标签 javascript angularjs node.js typescript npm

我设置了一个 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/

相关文章:

javascript - 任何以 0 开头的号码都会被识别为电话号码吗?

javascript - 为什么我不能使用原型(prototype)将函数分配给变量?

javascript - 对象数组的对象属性中的JS过滤数组

javascript - 在 AngularJS Dropdownlost 中设置默认文本选项

javascript - ng :test no injector found for element argument to getTestability

javascript - 在给定的 url 上提交脚本数据(var = url)

node.js - npm 模块 'bcrypt' 未安装在 Windows 10 中并在 sails 中抛出错误

javascript - Node JS : Login not working

javascript - 检查经过身份验证的用户是否具有 role=admin 并阻止访问状态 ui-router

javascript - 使用 jquery 添加的按钮上的 ng-click() 不起作用