首页 > 解决方案 > 如何使用 GitHub Actions 自动发布 Typescript 包?

问题描述

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

我尝试使用npm installand在云npm run build中创建一个dist文件夹,然后发布包,但它不起作用。它不会创建编译版本。我看到的唯一解决方案是我将其从云中删除/dist/并将.gitignore其上传到云端,但有没有其他方法可以忽略 dist 并使用 Github 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}}

标签: node.jstypescriptgithubnpmgithub-actions

解决方案


您必须在发布之前构建它或在您的 package.json 文件中添加预发布脚本。

IE:

  - 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 注册表。


推荐阅读