Node.js 在Typescript项目中使用共享源的最佳方法?
我正在做一个项目,使用Angular4作为前端,使用Typescript编写的NodeJS作为后端 我想在双方之间使用一些ts源(例如DTO),但我不知道如何以最佳方式处理它。它们确实使用了一些外部依赖项 我有3个文件夹:client/、server/和common/Node.js 在Typescript项目中使用共享源的最佳方法?,node.js,angular,typescript,Node.js,Angular,Typescript,我正在做一个项目,使用Angular4作为前端,使用Typescript编写的NodeJS作为后端 我想在双方之间使用一些ts源(例如DTO),但我不知道如何以最佳方式处理它。它们确实使用了一些外部依赖项 我有3个文件夹:client/、server/和common/ 公共文件夹(包含公共ts源)是否应该有自己的package.json 编译后的.js文件应该放在哪里?共有/dest/?如果是这样,那么在运行应用程序(客户端+服务器)时导入是否工作正常 我正在为我的节点类型脚本源使用Grun
- 公共文件夹(包含公共ts源)是否应该有自己的package.json
- 编译后的.js文件应该放在哪里?共有/dest/?如果是这样,那么在运行应用程序(客户端+服务器)时导入是否工作正常
我正在为我的节点类型脚本源使用Grunt来编译它们,并为我的angular应用程序使用angular cli(使用npm start)。处理这一问题的最佳方法是将公共代码视为一个包(您甚至可以决定将其按字面意思进行编译,以便您可以对其进行版本设置,即在专用npm提要中) 即使您没有制作NPM软件包,您也可以按照大多数步骤使您的使用尽可能简单
--declaration
)UMD
模块进行编译,这样相同的模块将在节点和浏览器中工作.js
和.d.ts
文件复制到需要使用它们的地方一般的想法是保留一组单独的“真实源”类型脚本文件,无论您在哪里复制代码,都只获取JavaScript和类型定义。处理这一问题的最佳方法是将通用代码视为一个包(您甚至可以决定按字面意思对其进行处理,以便您可以对其进行版本化—即在专用NPM提要中) 即使您没有制作NPM软件包,您也可以按照大多数步骤使您的使用尽可能简单
--declaration
)UMD
模块进行编译,这样相同的模块将在节点和浏览器中工作.js
和.d.ts
文件复制到需要使用它们的地方一般的想法是保留一组单独的“真实来源”类型脚本文件,无论您在哪里复制代码,都只获取JavaScript和类型定义。制作一个包,您可以在其中以“/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安装github:[username]/[repository]#[master/tag]
例如,typescript库的npm包,其中release标记包含传输的javascript(github源代码不包括javascript)。通过键入
npm install tfso/njs tfso repository#1.2.98
在“/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安装github:[username]/[repository]#[master/tag]
例如,typescript库的npm包,其中release标记包含传输的javascript(github源代码不包括javascript)。这可以通过键入
npm install tfso/njs tfso repository#1.2.98
来安装,如果您有一个带有client/server/shared
结构的简单项目,那么您可以更改tsconfig.json
以包含“编译器选项”:{“rootDir”:“/.”
如果你有一个简单的项目,它有一个客户机/服务器/共享的结构,那么你可以修改你的tsconfig.json
以包含的“编译器选项”:{“rootDir”:./.“}这还远没有C项目有用,我可以在C项目中添加类库并享受它。这是Node-imo的一个严重缺点,它远没有C#project有用,在C#project中我可以添加类库并享受它。这是Node imo的一个严重缺点