如何使用GitHub Actions自动发布Typescript包?

时间:2020-08-18 10:29:39

标签: node.js typescript github npm github-actions

每当我将代码推送到master分支时,我都在使用GitHub操作自动发布npm package。问题出在我的.gitignore中,已经添加了/dist/文件夹。因此,当我将代码推送到云时,它会忽略dist文件夹,而我只希望发布dist文件夹。我该怎么做?

我尝试使用npm installnpm run build在云中创建一个dist文件夹,然后发布该程序包,但是它不起作用。它不会创建编译版本。 我看到的唯一解决方案是从/dist/中删除.gitignore并将其上传到云中,但是还有其他方法可以忽略dist并使用Gi​​thub Actions将其自动发布到npm吗? >

这是我的.yml文件

name: NPM Publish

on:
  push:
    branches:
      - master

jobs:
  release:
    name: Pubish
    runs-on: ubuntu-latest
    steps:
      - name: ⏬ checkout
        uses: actions/checkout@v2.1.1
      - name: ? Node
        uses: actions/setup-node@v1.4.2
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org
      - name: ? Publish
        run: npm publish --access public
        env:
          NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}

2 个答案:

答案 0 :(得分:0)

您必须先构建它,然后才能在package.json文件中发布或添加预发布脚本。

即:

  - name: Build
    run: npm run build
  - name: ? Publish
    run: npm publish --access public

或 在package.json

  ...
  "scripts": {
  ...
  "prepublish": "npm run build",
}

之所以不进行构建,是因为它没有node_modules,因此您还需要安装它们并理想地使用缓存。

因此,在构建之前,您需要添加到yaml文件中。

- name: install
  run: npm install

或者如果您使用的是锁定文件(对于软件包不理想)

- name: install
  run: npm ci

请尝试也使用缓存而不是使npm注册表过载。

答案 1 :(得分:0)

我遇到了类似的问题。在我完成这里写的所有内容后,action 不会将 dist/ 文件夹添加到 npm。解决方案是创建 .npmignore 文件并添加到 tsconfig.json 和所有 ts 文件(*.ts)