我有一個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中所述相同的問題。 –