我正在开发一个项目,使用Angular4作为前端,NodeJS用Typescript编写作为后端。
我想在双方之间使用一些ts来源(例如DTO),但我不知道如何以最佳方式处理它。他们确实使用了一些外部依赖。
我有3个文件夹:client /,server /和common /.
我使用Grunt为我的Node打字稿源编译它们和angular-cli(使用npm start)为我的角度应用程序。
答案 0 :(得分:1)
处理此问题的最佳方法是将公共代码视为一个包(您甚至可以决定使用它,以便对其进行版本控制 - 即在私有NPM Feed中)。
即使您没有制作NPM包,也可以按照大部分步骤尽可能简化使用。
--declaration
)UMD
模块进行编译,因此相同的模块可以在Node和浏览器中使用.js
和.d.ts
文件复制到您需要使用它们的位置如果您使用“完整包”,请更改第三步,将文件复制到要打包的分发文件夹中。
一般的想法是保留一组TypeScript文件的“真实来源”,并且无论您将代码复制到哪里,只需获取JavaScript和类型定义。
答案 1 :(得分: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包,其中release标签包含已转换的javascript(github源不包含javascript)。可以通过键入npm install tfso/njs-tfso-repository#1.2.98
答案 2 :(得分:0)
如果您只是一个具有client / server/ shared
结构的简单项目,则可以将tsconfig.json
更改为包含"compilerOptions" : { "rootDir": "../." }
。