Node.js 从npm模块导入ts文件的正确方法
有必要将ts项目拆分为几个存储库/包,并从它们的各种组合中构建微服务。在一个微服务中需要一些包,在另一个微服务中需要一些包,在所有微服务中都需要一些包 在部署时,编译代码并执行JS文件(当然) 但现在发现,如果插件包只是从ts文件导出一些代码,那么在编译的微服务的执行过程中就会发生错误,因为微服务代码试图从外部库导入一些内容,却找不到包含此类内容的js文件 为了正确维护这样一个系统,我不仅需要更改连接包的ts代码,还需要构建它们,将编译后的代码推送到存储库中,并发布npm包,其中也包括此编译后的代码。Node.js 从npm模块导入ts文件的正确方法,node.js,typescript,npm,import,microservices,Node.js,Typescript,Npm,Import,Microservices,有必要将ts项目拆分为几个存储库/包,并从它们的各种组合中构建微服务。在一个微服务中需要一些包,在另一个微服务中需要一些包,在所有微服务中都需要一些包 在部署时,编译代码并执行JS文件(当然) 但现在发现,如果插件包只是从ts文件导出一些代码,那么在编译的微服务的执行过程中就会发生错误,因为微服务代码试图从外部库导入一些内容,却找不到包含此类内容的js文件 为了正确维护这样一个系统,我不仅需要更改连接包的ts代码,还需要构建它们,将编译后的代码推送到存储库中,并发布npm包,其中也包括此编译后的
这很不方便,看起来很奇怪,而且很容易忘记
有没有一种方法可以组织存储库/npm包,使其只发布TS代码(并保持最新),并且在微服务上,从外部库中提取编译TS代码,并在部署过程中在一个位置生成JavaScript?显然有很多方法。我已经为自己想出了下一个。在推送到主机时,通过github操作自动构建并上传到npm。我必须修改这一点,即只有当版本发生更改时,才会发生这种情况,但已经很困了(这样做是因为如果版本没有更改,那么pablish错误就会下降,只是管道长时间的旋转) 以下是该操作的yaml文件的第一个版本:
name: npm-publish
on:
push:
branches: [ master ]
jobs:
npm-publish:
name: npm-publish
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@master
- name: Set up Node.js
uses: actions/setup-node@master
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- name: Remove a dist folder from gitignore
run: sed -i '$ d' .gitignore
- name: Install dependencies
run: npm i
- name: Build
run: npm run build
- name: Publish
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
不是对你问题的直接回答,但我们解决了与勒纳非常相似的问题。可能值得一看。实际结果可以在这里找到:存储库中没有js代码,但是如果在您的项目中安装了该包,那么在运行时一切都连接良好