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

时间:2019-11-19 19:32:08

标签: node.js typescript npm import microservices

有必要将ts项目分成几个存储库/包,并从它们的各种组合中构建微服务。一个微服务需要一些软件包,而另一个则需要一些软件包。

在部署时,将编译代码并执行JS文件(当然)。

但是现在事实证明,如果插件包仅从ts文件中导出一些代码,则在执行编译的微服务时会发生错误,因为微服务代码会尝试从外部库中导入某些内容并执行找不到具有此类内容的js文件。

为了正确维护这样的系统,我不仅需要更改所连接软件包的ts代码,还需要构建它们,将编译后的代码推送到存储库中并发布npm软件包,其中还包括以下内容:编译的代码。
这很不方便,看起来很奇怪,而且很容易忘记。

是否有一种组织存储库/ npm软件包的方式,使得仅发布TS代码(并保持最新),并且在微服务上编译ts代码时,会从外部库和JavaScript中提取代码是在部署过程中一次生成的?

1 个答案:

答案 0 :(得分:0)

显然,有很多方法。我已经为自己准备了下一个。错误的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 }}
相关问题