Die outomatisering van jou npm-pakketpubliseringsproses met deurlopende integrasie en aflewering (CI/CD) verseker dat elke vrystelling deur 'n kwaliteithek – jou toetssuite – gaan voor publikasie. Terselfdertyd kan jy presies beheer wat in die finale gepubliseerde pakket beland deur toetslêers uit te sluit. In hierdie gids sal jy leer hoe om CI/CD op te stel vir 'n eenvoudige npm-pakket - 'n alfanumeriese valideerder - sodat elke nuwe GitHub-vrystelling toetse aktiveer, die pakketweergawe opdateer en outomaties 'n skoon pakket na npm publiseer. Waarom outomatiseer npm-publisering? Handmatige npm-publisering kan tydrowend en foutgevoelig wees, veral namate jou projek groei en bydraers kry. Deur die proses te outomatiseer, kan jy: Voer outomaties toetse uit voordat dit gepubliseer word. As toetse misluk, word die nuwe weergawe nie vrygestel nie. Verseker kwaliteit: Die gepubliseerde pakketweergawe pas altyd by die vrystellingmerker. Konsekwente weergawe: Bydraers dien kode in, jy skep 'n vrystelling, en die pyplyn doen die res - geen spesiale npm-toestemmings word vereis nie. Wrywinglose samewerking: Voorvereistes Node.js & npm: Klik as jy nie NodeJS en NPM geïnstalleer het nie. hier Bevestig installasie deur die kode hieronder in jou terminaal uit te voer. node -v npm -v GitHub-rekening en -bewaarplek: Jy het 'n GitHub-bewaarplek nodig om kode te stoor en GitHub-aksies uit te voer. NPM-rekening en toegangsteken: Registreer of meld aan by en genereer 'n toegangsteken. npmjs.com Voeg die toegangsteken as 'n geheim by jou GitHub-bewaarplek vir outomatiese publisering. Stap 1: Stel die projek op Ons sal 'n eenvoudige skep wat 'n funksie uitvoer wat kontroleer of 'n string alfanumeries is. alphanumeric-validator Inisialiseer die projek mkdir alphanumeric-validator cd alphanumeric-validator npm init -y op Vir die sal dit so lyk. Dateer package.json soos nodig. 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" } Implementeer die Validator // index.js function isAlphaNumeric(str) { return /^[a-z0-9]+$/i.test(str); } module.exports = isAlphaNumeric; Stap 2: Voeg toetse plaaslik by en voer dit uit Toets verseker dat jy nie gebroke kode publiseer nie. Installeer Jest npm install --save-dev jest Skep 'n toetslêer mkdir tests Plak die kode hieronder in die -lêer. 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); }); Doen toetse npm test Slaag toetse? Groot. Nou sal ons verseker dat hierdie toetse in CI uitgevoer word voordat dit gepubliseer word. Stap 3: Sluit nodemodules uit van Git Voordat u na Github publiseer, wil u die uitsluit. Jy wil nie verbind tot weergawebeheer nie, aangesien dit 'n groot aantal lêers bevat wat deur herskep kan word. node_modules node_modules npm install by die wortel van jou projek: Skep 'n .gitignore lêer echo "node_modules" >> .gitignore Dit verseker dat nie deur git nagespoor word nie en nie na jou bewaarplek gedruk sal word nie. node_modules Stap 4: Sluit toetse uit die gepubliseerde pakket uit Terwyl jy toetse sal uitvoer tydens CI, wil jy nie hê dat die toetslêers by jou gepubliseerde npm-pakket ingesluit word nie. Dit hou die pakket skoon, het 'n klein bondelgrootte en verseker dat slegs die nodige lêers aan gebruikers gestuur word. Skep 'n lêer in die wortelgids en voeg die name van die toetslêer by. .npmignore // .npmignore __tests__ *.test.js // captures all files in the directory with a .test.js extension Dit verseker dat die toetslêers nie ingesluit word wanneer jy laat loop nie. npm publish Stap 5: Hou jou kode op GitHub aan Skep 'n nuwe GitHub-bewaarplek: Gaan na en skep 'n bewaarplek. https://github.com/new alphanumeric-validator Druk jou kode 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 Stap 5: Aanvanklike Handmatige Publiseer na npm Voordat u die outomatisering begin, bevestig dat u pakket gepubliseer kan word —sien hier. Voeg dan die vlag by om jou pakket publiek en toeganklik vir gebruikers te maak. --access public npm login npm publish --access public Besoek om te verifieer dat die aanvanklike weergawe regstreeks is. https://www.npmjs.com/package/alphanumeric-validator Stap 6: Stel die GitHub Actions-werkvloei op Jy moet 'n werkvloei opstel wat op elke vrystellinggebeurtenis loop, sodat wanneer jy 'n nuwe vrystelling skep (soos ): v1.0.1 Die werkvloei kyk na jou kode. Installeer afhanklikhede. Voer toetse uit om kwaliteit te verseker. Dateer op na die nuwe weergawe vanaf die vrystellingmerker. package.json Publiseer die opgedateerde pakket na npm sonder om toetslêers in te sluit. Die werkvloeilêer Skep : .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 }} Voeg jou NPM-token by GitHub Besoek (Maak seker jy vervang met jou werklike gebruikersnaam) https://www.npmjs.com/settings/:username/tokens/new :username Voer die naam in, kies outomatisering vir die tipe en genereer Jy sal na die tokens-bladsy herlei word, waar jy die token kan kopieer. Gaan na in jou GitHub-bewaarplek. Instellings > Geheime en veranderlikes > Aksies Klik en voeg by. New Repository Secret NPM_TOKEN Stap 7: Skep 'n nuwe vrystelling Kom ons sê jy wil byvoeg vir vrystelling, en jy het dit gedruk: README.md v1.0.1 Stel 'n nuwe vrystelling op: Gaan na die -afdeling in jou GitHub-repo. [ ] Vrystellings https://github.com/username/repo/releases Klik . Konsep 'n nuwe vrystelling Stel die "Tag weergawe" na v1.0.1. Klik . Publiseer vrystelling Die vrystellinggebeurtenis begin. Die werkstroom, Werkvloei geaktiveer: Kyk na die kode. Installeer afhanklikhede. Doen toetse. As toetse misluk, stop die werk en sal die pakket nie gepubliseer word nie. As toetse slaag, dateer dit package.json op na . 1.0.1 Publiseer die weergawe na npm, toetslêers uitgesluit. 1.0.1 Besoek na 'n oomblik jou npm-pakketbladsy om die nuwe weergawe regstreeks te sien. Verifieer op npm: Gevolgtrekking Deur GitHub-aksies in u npm-publiseringswerkvloei te integreer, word 'n wonderlike CI/CD-pyplyn geskep. Met elke nuwe vrystelling word 'n omvattende reeks toetse uitgevoer, package.json word met die korrekte weergawe opgedateer, en 'n vaartbelynde pakket word na npm gepubliseer—vry van onnodige lêers soos toetse. Hierdie benadering bespaar tyd, verminder menslike foute en verhoog die betroubaarheid van jou vrystellings, wat dit makliker maak vir bydraers om te sien dat hul werk naatloos aan die gang kom. is nou al wat nodig is om 'n volledig getoetste, behoorlik weergawe-pakket na die npm-register te stuur. 'N Enkele GitHub-vrystelling