2016-10-04 41 views
1

TL;博士

我能有打字稿編譯不同的文件夾作爲單獨的庫,並導入結果就像一個節點模塊?編譯打字稿項目作爲本地模塊


例如,我有一個common文件夾800頁的文件,然後幾個app文件夾(app1app2等)各自具有20個+/-文件。所有app文件夾都引用common文件夾中的classes/interfaces/etc。問題是,每當我編譯一個app文件夾時,它也編譯所有800個common文件。這個彙編時間太長,我真的很想避免它。

我已經在commonapp1中使用tsc --diagnostics --listFiles進行了測試和確認。

我試過使用exclude屬性tsconfig.json來忽略common文件夾,但它似乎沒有效果。我也嘗試了,pathscompilerSettings內的多種配置,但無濟於事。

noResolve似乎幾乎可以實現我在找的東西,但是安全嗎?

有沒有辦法將它們分開編譯並避免重新編譯獨立的common項目?


技術堆棧:

  • 角2.0.1
  • SystemJS 0.19.39
  • 打字稿2.0.3
  • 的Windows 8.1
  • ASP.NET MVC6

回答

1

獨立您共同文件夾到一個不同的項目通話common,並使其成爲一個Node.js的模塊,指令位置:

https://docs.npmjs.com/getting-started/creating-node-modules

然後在你原來的項目,你就以下:

方法1

npm link <folder path of common> 

方法2

npm install <folder path of common> --save 

方法1更容易使用,因爲更新到common會自動反映在主項目中,而不必擔心更新。

如果您計劃稍後將其作爲獨立npm軟件包發佈,方法2會很好。但是更新到common需要在主項目中手動更新步驟。

在您的common文件夾中,請確保您創建了.npmignore文件。讓說你common項目具有以下結構:

.                                        
├── index.d.ts 
├── index.js                                      
├── lib/ <--- compiled location                                
├── node_modules                                     
├── package.json                                     
├── src/                                       
├── tsconfig.json                                    
├── typings                                      
└── typings.json 

那麼你.npmignore應該看起來像以下:

.DS_Store 
.git 
.gitignore 
examples 
node_modules 
npm-debug.log 
src 
tsconfig.json 
typings 
typings.json 

您可以檢查出我的ng2-simple-mq作爲一個例子。

+0

我不知道這是否真的能解決我的問題。我可以把整件事情都捆綁起來,只是這樣做效率低下。我想看看香草Typescript編譯器是否可以將「項目」編譯爲本地模塊。 – JimmyBoh

+0

@JimmyBoh其實有一個更簡單的方法。 –

+0

@JimmyBoh已更新。 –