2017-10-09 84 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

相关问题