Рубрики
Uncategorized

Auto опубликовать пакет NPM с действиями GitHub

Вдохновленный htps://michaelzanggl.com/articles/github-actions-cd-setup/ Есть пара способов W … помечена GitHub, NPM, DEVOPS, JavaScript.

Вдохновлен https://michaelzanggl.com/articles/github-actions-cd-setup/

Есть пара способов настроить публикацию на НПМ: 1. При толчке на определенную ветку

  1. При создании тега
  2. При создании фиксации в определенном виде
  3. При создании отпуска на GitHub напрямую.

Это то, что вам нужно знать о моем проекте:

  1. Код для последней версии находится на последнем ветке.
  2. Код для версии 1 находится на ветке V1-Neighle.

Причина этих названий отделений станет очевидной позже.

Создайте файл YML

// .github/workflows.yml
name: NPM publish CD workflow

on:
  release:
    types: [published]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.release.target_commitish }}
      # install Node.js
      - name: Use Node.js 12
        uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: yarn install
      # set up git since we will later push to the repo
      - run: git config --global user.name "GitHub CD bot"
      - run: git config --global user.email "savchenkoalexander91@gmail.com"
      # upgrade npm version in package.json to the tag used in the release.
      - run: npm version ${{ github.event.release.tag_name }}
      # build the project
      - run: npm run build
      # run tests just in case
      - run: npm test
      - run: npm config set '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}"
      # publish to NPM -> there is one caveat, continue reading for the fix
      - run: npm publish --tag ${{ github.event.release.target_commitish }}
        env:
          # Use a token to publish to NPM. See below for how to set it up
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
      # push the version changes to GitHub
      - run: git push
        env:
          # The secret is passed automatically. Nothing to configure.
          github-token: ${{ secrets.GITHUB_TOKEN }}

Получить токен NPM

Перейдите в NPM, в настройках перейдите на «auth Tokens» и нажмите кнопку «Создать новый токен».

Добавьте токен NPM в «Секреты»

Скопируйте токен и отправляйтесь на настройки проекта вашего репозитория GitHUB. Перейдите в «Секреты» и нажмите «Новый секрет». Дайте ему имя «npm_token» и для значения, вставьте токен внутри.

Предостережение

Вы видите, когда вы делаете NPM Установить <Пакет> Это на самом деле сделает NPM Установите <Пакет> @latest за кулисами. И когда вы делаете NPM публиковать Это на самом деле сделает NPM публикует --tag последний

«Последний» является зарезервированным тегом для NPM. Однако, хотя проект уже находится в версии 2, публикация фиксации для версии 1 сделает его «последнюю» версию. Это означает, что когда кто-то устанавливает пакет потом, он получает версию 1 вместо версии 2. Это, конечно, не то, что мы хотим.

Итак, чтобы исправить это, мы должны указать другой тег при публикации.

Поэтому у нас здесь есть два варианта:

  1. NPM Publish --tag $ {{github.event.release.target_commitish}} (мой выбор)
  2. Добавьте тег публикации по умолчанию для Package Package V1.json:
"publishConfig": {
  "tag": "v1-latest"
}

Причина, по которой я выбрал V1-новейший только V1, заключается в том, что теги NPM не должны следовать семете. В противном случае NPM не сможет отличить тег от конкретной опубликованной версии.

Оригинал: «https://dev.to/savchenko91/auto-publish-npm-package-with-github-actions-57jh»