docs/js-ts/npm.ru.md
# ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Π² NPM
[English](./npm.en.md) β [Π ΡΡΡΠΊΠΈΠΉ](./npm.ru.md)
Π Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Π² **NPM**. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π΅ΡΡΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ **GitHub Packages**, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½ΠΈΠΆΠ΅. Π‘Π°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅Π΅Π½:
- ΠΡΠΆΠ½Π° CI ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΡΠ΅Π³Π°
- Π Π΅Ρ ΡΠ°ΠΌΠΊΠ°Ρ
, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅Π΅ΡΡΡΠ΅ (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΡ TypeScript Π² JavaScript)
- ΠΠ΅ΡΡΠΈΡ ΡΠ΅Π»ΠΈΠ·Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° Π² `package.json` Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° **version**
- ΠΠ»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π² ΡΠ΅Π΅ΡΡΡΠ΅, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ `NODE_AUTH_TOKEN`
- ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ
## GitHub Actions
```yml
# ./.github/workflows/npm-publish-workflow.yml
name: Publish Node.js Package
on:
release:
# ΠΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ GitHub Release.
types: [released]
jobs:
npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '12.x'
# ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Π΅ΡΡΡ, Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ
# Π°Π΄ΡΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π² GitHub Packages, Π½ΡΠΆΠ½ΠΎ
# ΡΠΊΠ°Π·Π°ΡΡ "https://npm.pkg.github.com/".
registry-url: 'https://registry.npmjs.org'
# ΠΡΠ»ΠΈ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠΊΠΎΡΠΏ (@...) Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΠ°ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°,
# ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΅Π³ΠΎ Π·Π΄Π΅ΡΡ. Π ΠΈΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ½ΠΎ
# ΡΠ΄Π°Π»ΠΈΡΡ.
scope: '@orlovedev'
- name: Set env
# ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π»Π΅ΠΊΠ°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΠΈΠ· ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠ³ΠΎ ΡΠ΅Π³Π° ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π΅Ρ
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ RELEASE_VERSION.
run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF#refs/*/}
- name: Install dependencies
run: npm ci
# ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ
# ΠΏΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ ΠΊ ΡΠΎΠΌΡ Π²ΠΈΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΈ
# Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅Π΅ΡΡΡΠ΅.
- name: Transpile to JavaScript
run: npm run build
# ΠΡΠΎΡ ΡΡΠ°ΠΏ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΠΈΠ· ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠ³ΠΎ ΡΠ΅Π³Π° Π²
# package.json -> version.
- run: |
sed -i s/"\"version\":.*/\"version\": \"$RELEASE_VERSION\","/ package.json
- name: Publish to NPM
run: npm publish
env:
# ΠΠ»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ GitHub Secrets.
# @see https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
```