Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从npm模块导入ts文件的正确方法_Node.js_Typescript_Npm_Import_Microservices - Fatal编程技术网

Node.js 从npm模块导入ts文件的正确方法

Node.js 从npm模块导入ts文件的正确方法,node.js,typescript,npm,import,microservices,Node.js,Typescript,Npm,Import,Microservices,有必要将ts项目拆分为几个存储库/包,并从它们的各种组合中构建微服务。在一个微服务中需要一些包,在另一个微服务中需要一些包,在所有微服务中都需要一些包 在部署时,编译代码并执行JS文件(当然) 但现在发现,如果插件包只是从ts文件导出一些代码,那么在编译的微服务的执行过程中就会发生错误,因为微服务代码试图从外部库导入一些内容,却找不到包含此类内容的js文件 为了正确维护这样一个系统,我不仅需要更改连接包的ts代码,还需要构建它们,将编译后的代码推送到存储库中,并发布npm包,其中也包括此编译后的

有必要将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代码,但是如果在您的项目中安装了该包,那么在运行时一切都连接良好