Добавь README, CHANGELOG и CI с публикацией в npm по тегу

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
vasyanskandClaude Opus 5.5 committed 2026-10-24 11:01:52 +07:00
1 parent d7d02267e2
commit f836e0a489
3 files changed
+223

No files matched your search

+75
View File
@@ -0,0 +1,75 @@
name: CI
on: [push, pull_request]
permissions:
contents: read
jobs:
test:
name: Test
runs-on: ubuntu-22.04
container: catthehacker/ubuntu:act-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
- run: npm ci
- run: npm run typecheck
- run: npm run lint
- run: npm test
- run: npm run build
- run: npm pack --dry-run
# Публикация только по тегу v*. Тег обязан совпадать с версией в
# package.json: иначе в npm уехала бы версия, которой нет в истории тегов.
publish:
name: Publish to npm
needs: test
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-22.04
container: catthehacker/ubuntu:act-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
- run: npm ci
- name: Check tag matches package.json version
env:
REF_NAME: ${{ github.ref_name }}
run: |
set -eu
pkg_version="$(node -p 'require("./package.json").version')"
tag_version="${REF_NAME#v}"
if [ "$pkg_version" != "$tag_version" ]; then
echo "версия package.json ($pkg_version) не совпадает с тегом ($REF_NAME)" >&2
exit 1
fi
- run: npm run build
# Токен подставляется через env шага, а не в текст команды: подстановка
# в run попадает в командную строку процесса и разбирается shell.
# Одинарные кавычки — в ~/.npmrc пишется литерал ${NPM_TOKEN}, npm
# раскрывает его из окружения сам, и значение не попадает на диск.
- name: Publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
set -eu
trap 'rm -f ~/.npmrc' EXIT
printf '%s\n' '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > ~/.npmrc
npm publish --access public
- name: Cleanup
if: always()
run: rm -f ~/.npmrc