我有一个TypeScript项目,可以将生成的JavaScript文件生成为./src/。这在对现有的npm模块构建时非常合适(它是一个Angular 2项目,因此可以导入这些模块,但在这种情况下我认为不重要)。当我安装一个特定的npm模块(ng2-dynamic-dialog,其中我是作者)并从该模块导入任何东西时,tsc突然将JavaScript构建到不同的文件夹(而不是将其构建到./src/,现在正在构建到./src/src/),它还在./src/中创建了一个node_modules文件夹的副本,其中只包含ng2-dynamic-dialog。TypeScript - 导入外部npm模块导致tsc的输出文件夹发生变化
这可能不是一个伟大的explination所以这里有个例子 https://github.com/leewinder/ng2-dynamic-dialog(SHA - 8ef439d6)如果克隆的开发分支,在./samples运行TSC你会看到
的JS文件正确构建到./src。如果打开src/samples/samples.component.ts并取消注释'ng2-dynamic-dialog'中的'import {Ng2DynamicDialogComponent}'行;''并再次运行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包的源代码与上述相同,但在开发文件夹中。
任何帮助将被认真赞赏,因为我现在正在对着砖墙撞我的头。
未识别baseDir,但确实识别到compilerOptions.rootDir。将rootDir设置为src /,而_removing_ compilerOptions.outDir似乎解决了这个问题。将_Dir设置为_anything_导致与OP中所述相同的问题。 –