2017-10-09 91 views
0

我正在使用Angular4作爲前端,使用Typescript編寫的NodeJS作爲後端。在Typescript項目中使用共享源的最佳方式?

我想在雙方之間使用一些ts源(例如DTO),但我不知道如何處理它是最好的方法。他們確實使用了一些外部依賴。

我有3個文件夾:client /,server /和common /。

  • 公用文件夾(包含公共源文件)是否有自己的package.json?
  • 編譯後的.js文件應該放到哪裏?共同/目標/?如果是這樣,運行應用程序(客戶端+服務器)時導入工作是否正常?

我使用Grunt爲我的節點typescript來源編譯他們和angular-cli(與npm開始)爲我的角應用程序。

回答

1

來處理這將是像對待一個包中的通用代碼(你甚至可以決定從字面上所以你可以版本,它 - 即在私人NPM飼料)的最佳方式。

即使您沒有製作NPM包,您也可以按照大部分步驟使您的使用盡可能簡單。

  1. 編譯定義的公共代碼開啓(--declaration
  2. 編譯使用UMD模塊,因此相同的模塊將在節點並在瀏覽器
  3. 複製到.js.d.ts文件,你需要在那裏工作以消耗它們

如果您選擇「完整軟件包」,請更改第三步以將文件複製到要打包的分發文件夾中。

的總體思路是,以保持設定的打字稿文件的單個「真理之源」,何地,你的代碼複製到剛剛獲得的JavaScript和類型定義。

0

您在哪裏導出庫 「./index.ts」

的package.json

{ 
    //... 
    "main": "./build/index.js", 
    "typings": "./build/index" 
} 

tsconfig.json

{ 
    "compilerOptions": { 
     //... 
     "declaration": true, 
     "sourceMap": true, 
     "outDir": "./build" 
    }, 
    "exclude": [ 
     "node_modules", 
     "build" 
    ] 
} 

把你的代碼,GitHub的一個包,通過使用NPM安裝它,npm install github:[username]/[repository]#[master/tag]

例如https://github.com/tfso/njs-tfso-repository是一個打字稿庫的npm包,其中的發行標籤包含轉譯的javascript(github源碼不包括javascript)。這可以通過鍵入npm install tfso/njs-tfso-repository#1.2.98

相關問題