Automatizácia vášho procesu publikovania balíkov npm s nepretržitou integráciou a doručovaním (CI/CD) zaisťuje, že každé vydanie prejde pred zverejnením bránou kvality – vašou testovacou súpravou. Vylúčením testovacích súborov môžete zároveň presne kontrolovať, čo skončí v konečnom zverejnenom balíku. V tejto príručke sa dozviete, ako nastaviť CI/CD pre jednoduchý balík npm – alfanumerický validátor – aby každé nové vydanie GitHubu spustilo testy, aktualizovalo verziu balíka a automaticky zverejnilo čistý balík na npm. Prečo automatizovať publikovanie npm? Manuálne publikovanie npm môže byť časovo náročné a náchylné na chyby, najmä keď váš projekt rastie a získava prispievateľov. Automatizáciou procesu môžete: Pred zverejnením automaticky spustite testy. Ak testy zlyhajú, nová verzia nebude vydaná. Zabezpečenie kvality: Zverejnená verzia balíka sa vždy zhoduje so značkou vydania. Konzistentné vytváranie verzií: Prispievatelia zašlú kód, vy vytvoríte vydanie a o zvyšok sa postará kanál – nevyžadujú sa žiadne špeciálne povolenia npm. Bezchybná spolupráca: Predpoklady Node.js a npm: Kliknite ak nemáte nainštalované NodeJS a NPM. sem, Potvrďte inštaláciu spustením kódu nižšie vo vašom termináli. node -v npm -v Účet a úložisko GitHub: Na ukladanie kódu a spúšťanie akcií GitHub potrebujete úložisko GitHub. NPM účet a prístupový token: Zaregistrujte sa alebo prihláste na a vygenerujte prístupový token. npmjs.com Pridajte prístupový token ako tajný do svojho úložiska GitHub na automatické zverejňovanie. Krok 1: Nastavte projekt Vytvoríme jednoduchý balík , ktorý exportuje funkciu, ktorá kontroluje, či je reťazec alfanumerický. alphanumeric-validator Inicializujte projekt mkdir alphanumeric-validator cd alphanumeric-validator npm init -y Podľa potreby Pre to bude vyzerať takto. aktualizujte package.json . alphanumeric-validator { "name": "alphanumeric-validator", "version": "1.0.0", "description": "Validates if a string is alphanumeric", "main": "index.js", "scripts": { "test": "jest" }, "keywords": ["alphanumeric", "validator"], "author": "Your Name", "license": "ISC" } Implementujte Validator // index.js function isAlphaNumeric(str) { return /^[a-z0-9]+$/i.test(str); } module.exports = isAlphaNumeric; Krok 2: Pridajte a spustite testy lokálne Testovanie zaisťuje, že nezverejníte poškodený kód. Nainštalujte Jest npm install --save-dev jest Vytvorte testovací súbor mkdir tests Vložte nižšie uvedený kód do súboru . tests/index.text.js // tests/index.test.js const isAlphaNumeric = require('../index'); test('valid alphanumeric strings return true', () => { expect(isAlphaNumeric('abc123')).toBe(true); }); test('invalid strings return false', () => { expect(isAlphaNumeric('abc123!')).toBe(false); }); Spustiť testy npm test Úspešné testy? Skvelé. Teraz zabezpečíme spustenie týchto testov v CI pred zverejnením. Krok 3: Vylúčte moduly uzlov z Git Pred publikovaním na Github chcete vylúčiť . Nechcete zaviazať do správy verzií, pretože obsahuje veľké množstvo súborov, ktoré je možné vygenerovať pomocou . node_modules node_modules npm install v koreňovom adresári vášho projektu: Vytvorte súbor .gitignore echo "node_modules" >> .gitignore To zaisťuje, že nie je sledovaný git a nebude poslaný do vášho úložiska. node_modules Krok 4: Vylúčte testy zo zverejneného balíka Aj keď budete počas CI spúšťať testy, nechcete, aby boli testovacie súbory súčasťou vášho publikovaného balíka npm. Vďaka tomu je balík čistý, má malú veľkosť balíka a používateľom sa doručujú iba potrebné súbory. Vytvorte súbor v koreňovom priečinku a pridajte názvy testovacích súborov. .npmignore // .npmignore __tests__ *.test.js // captures all files in the directory with a .test.js extension To zaisťuje, že testovacie súbory nebudú zahrnuté pri spustení . npm publish Krok 5: Hostite svoj kód na GitHub Vytvorte nové úložisko GitHub: Prejdite na a vytvorte úložisko . https://github.com/new alphanumeric-validator Push Your Code git init git add . git commit -m "Initial commit" git remote add origin git@github.com:YOUR_USERNAME/alphanumeric-validator.git git push -u origin main Krok 5: Počiatočné manuálne publikovanie do npm Pred spustením automatizácie sa uistite, že váš balík môže byť zverejnený – pozri tu. Potom pridajte , aby bol váš balík verejný a prístupný používateľom. --access public npm login npm publish --access public Navštívte a overte, či je pôvodná verzia aktívna. https://www.npmjs.com/package/alphanumeric-validator Krok 6: Nastavenie pracovného postupu akcií GitHub Musíte nakonfigurovať pracovný postup, ktorý sa spustí pri každej udalosti vydania, aby pri vytváraní nového vydania (napríklad ): v1.0.1 Pracovný postup skontroluje váš kód. Inštaluje závislosti. Vykonáva testy na zabezpečenie kvality. Aktualizuje na novú verziu zo značky vydania. package.json Zverejní aktualizovaný balík do npm bez zahrnutia testovacích súborov. Súbor pracovného postupu Vytvorte : .github/workflows/publish.yml name: Publish Package to npm # Trigger this workflow whenever a new release is published on: release: types: [published] # Grant write permissions to the repository contents so we can push version updates permissions: contents: write jobs: publish: runs-on: ubuntu-latest steps: # Step 1: Check out the repository's code at the default branch # This makes your code available for subsequent steps like installing dependencies and running tests. - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} ref: ${{ github.event.repository.default_branch }} # Step 2: Set up a Node.js environment (Node 20.x) and configure npm to use the official registry # This ensures we have the right Node.js version and a proper registry URL for installs and publishing. - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20.x' registry-url: 'https://registry.npmjs.org' # Step 3: Install dependencies using npm ci # This ensures a clean, reproducible installation based on package-lock.json. - name: Install dependencies run: npm ci # Step 4: Run your test suite (using the "test" script from package.json) # If tests fail, the workflow will stop here and not publish a broken version. - name: Run tests run: npm test # Step 5: Update package.json to match the release tag # The release tag (eg, v1.0.1) is extracted, and npm version sets package.json version accordingly. # The --no-git-tag-version flag ensures npm doesn't create its own tags. # This step keeps package.json's version aligned with the release tag you just created. - name: Update package.json with release tag run: | TAG="${{ github.event.release.tag_name }}" echo "Updating package.json version to $TAG" npm version "$TAG" --no-git-tag-version # Step 6: Commit and push the updated package.json and package-lock.json back to the repo # This ensures your repository always reflects the exact version published. # We use the GITHUB_TOKEN to authenticate and the granted write permissions to push changes. - name: Commit and push version update run: | TAG="${{ github.event.release.tag_name }}" git config user.name "github-actions" git config user.email "github-actions@github.com" git add package.json package-lock.json git commit -m "Update package.json to version $TAG" git push origin ${{ github.event.repository.default_branch }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Step 7: Publish the new version to npm # The NODE_AUTH_TOKEN is your npm access token stored as a secret. # npm publish --access public makes the package available to anyone on npm. - name: Publish to npm run: npm publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} Pridanie tokenu NPM na GitHub Navštívte (Uistite sa, že ste nahradili vaším skutočným používateľským menom) https://www.npmjs.com/settings/:username/tokens/new :username Zadajte názov, pre typ vyberte automatizáciu a vygenerujte Budete presmerovaní na stránku tokenov, kde môžete token skopírovať. Prejdite do vo svojom úložisku GitHub. Nastavenia > Tajomstvá a premenné > Akcie Kliknite na a pridajte . Nový tajný kľúč úložiska NPM_TOKEN Krok 7: Vytvorenie nového vydania Povedzme, že chcete pridať pre vydanie a stlačili ste ho: README.md v1.0.1 Návrh nového vydania: Prejdite do sekcie vo svojom úložisku GitHub. [ ] Vydania https://github.com/username/repo/releases Kliknite na . položku Návrh nového vydania Nastavte „Verzia značky“ na v1.0.1. Kliknite na . položku Publikovať vydanie Spustí sa udalosť uvoľnenia. pracovný postup, Spustený pracovný postup: Skontroluje kód. Inštaluje závislosti. Spustí testy. Ak testy zlyhajú, úloha sa zastaví a balík nebude zverejnený. Ak testy prebehnú úspešne, aktualizuje súbor package.json na . 1.0.1 Zverejňuje verziu do npm, s výnimkou testovacích súborov. 1.0.1 Po chvíli navštívte svoju stránku balíka npm a pozrite si novú verziu naživo. Overiť na npm: Záver Integrácia akcií GitHub do vášho pracovného postupu publikovania npm vytvára skvelý kanál CI/CD. S každým novým vydaním sa spustí komplexná séria testov, súbor package.json sa aktualizuje správnou verziou a do npm sa publikuje zjednodušený balík – bez nepotrebných súborov, ako sú testy. Tento prístup šetrí čas, znižuje ľudské chyby a zvyšuje spoľahlivosť vašich vydaní, vďaka čomu prispievatelia ľahšie uvidia, ako ich práca plynulo funguje. je teraz všetko, čo je potrebné na odoslanie plne otestovaného balíka so správnou verziou do registra npm. Jediné vydanie GitHubu