paint-brush
Ինչպես ավտոմատ կերպով հրապարակել ձեր NPM փաթեթը՝ օգտագործելով GitHub գործողություններըկողմից@kingflamez
Նոր պատմություն

Ինչպես ավտոմատ կերպով հրապարակել ձեր NPM փաթեթը՝ օգտագործելով GitHub գործողությունները

կողմից Oluwole Adebiyi9m2024/12/20
Read on Terminal Reader

Չափազանց երկար; Կարդալ

Ձեր npm փաթեթի հրապարակման գործընթացի ավտոմատացումը շարունակական ինտեգրմամբ և առաքմամբ (CI/CD) ապահովում է, որ յուրաքանչյուր թողարկում անցնում է որակյալ դարպասով: Այս ուղեցույցում դուք կսովորեք, թե ինչպես կարգավորել CI/CD պարզ npm փաթեթի համար՝ այբբենական թվային վավերացնող: GitHub-ի յուրաքանչյուր նոր թողարկում առաջացնում է թեստեր, թարմացնում է փաթեթի տարբերակը և ավտոմատ կերպով հրապարակում մաքուր փաթեթ:
featured image - Ինչպես ավտոմատ կերպով հրապարակել ձեր NPM փաթեթը՝ օգտագործելով GitHub գործողությունները
Oluwole Adebiyi HackerNoon profile picture
0-item


Ձեր npm փաթեթի հրապարակման գործընթացի ավտոմատացումը շարունակական ինտեգրմամբ և առաքմամբ (CI/CD) ապահովում է, որ յուրաքանչյուր թողարկում անցնում է որակյալ դարպասով՝ ձեր թեստային փաթեթով, մինչև հրապարակումը: Միևնույն ժամանակ, դուք կարող եք վերահսկել, թե ինչն է հայտնվում վերջնական հրապարակված փաթեթում՝ բացառելով թեստային ֆայլերը: Այս ուղեցույցում դուք կսովորեք, թե ինչպես կարգավորել CI/CD պարզ npm փաթեթի համար՝ այբբենական թվային վավերացնող, այնպես որ GitHub-ի յուրաքանչյուր նոր թողարկում գործարկի թեստեր, թարմացնի փաթեթի տարբերակը և ավտոմատ կերպով հրապարակի մաքուր փաթեթը npm-ի:


Ինչու՞ ավտոմատացնել npm հրապարակումը:

Ձեռքով npm հրատարակումը կարող է ժամանակատար և սխալների հակված լինել, հատկապես, երբ ձեր նախագիծն աճում է և ներդրողներ է ձեռք բերում: Ավտոմատացնելով գործընթացը՝ կարող եք.

  • Ապահովել որակը. հրապարակելուց առաջ ինքնաբերաբար կատարեք թեստերը: Եթե թեստերը ձախողվեն, նոր տարբերակը չի թողարկվում:
  • Հետևողական տարբերակում. հրապարակված փաթեթի տարբերակը միշտ համընկնում է թողարկման պիտակի հետ:
  • Առանց շփման համագործակցություն. մասնակիցները ներկայացնում են կոդը, դուք ստեղծում եք թողարկում, իսկ խողովակաշարն անում է մնացածը. հատուկ npm թույլտվություններ չեն պահանջվում:


Նախադրյալներ

  1. Node.js & npm:
    • Սեղմեք այստեղ, եթե դուք չունեք NodeJS և NPM տեղադրված:
    • Հաստատեք տեղադրումը` գործարկելով ստորև նշված կոդը ձեր տերմինալում:
 node -v npm -v
  1. GitHub հաշիվ և պահոց.
    • Ձեզ անհրաժեշտ է GitHub պահոց՝ կոդը պահելու և GitHub գործողությունները գործարկելու համար:
  2. NPM հաշիվ և մուտքի նշան.
    • Գրանցվեք կամ մուտք գործեք npmjs.com և ստեղծեք մուտքի նշան:
    • Ավելացրեք մուտքի նշանը որպես գաղտնիք ձեր GitHub պահոցում՝ ավտոմատ հրապարակման համար:


Քայլ 1. Ստեղծեք նախագիծը

Մենք կստեղծենք պարզ alphanumeric-validator փաթեթ, որը արտահանում է ֆունկցիա՝ ստուգելու, թե արդյոք տողը տառային է:

  1. Նախաձեռնել Նախագիծը

     mkdir alphanumeric-validator cd alphanumeric-validator npm init -y
  2. Անհրաժեշտության դեպքում թարմացրեք 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" }
  1. Իրականացնել Validator-ը
 // index.js function isAlphaNumeric(str) { return /^[a-z0-9]+$/i.test(str); } module.exports = isAlphaNumeric;


Քայլ 2. Ավելացնել և գործարկել թեստերը տեղում

Փորձարկումը երաշխավորում է, որ դուք չեք հրապարակում կոտրված ծածկագիրը:

  1. Տեղադրեք Jest-ը

     npm install --save-dev jest
  2. Ստեղծեք թեստային ֆայլ

     mkdir tests
  3. Տեղադրեք ստորև նշված կոդը 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); });
  4. Գործարկել թեստերը

     npm test 


Հաջող փորձարկումն անցավ

Թեստեր հանձնե՞լը: Հիանալի: Այժմ մենք կապահովենք, որ այս թեստերը կաշխատեն CI-ում, նախքան հրապարակելը:


Քայլ 3. Բացառեք հանգույցների մոդուլները Git-ից

Մինչ Github-ում հրապարակելը, ցանկանում եք բացառել node_modules ը: Դուք չեք ցանկանում node_modules միացնել տարբերակի վերահսկմանը, քանի որ այն պարունակում է մեծ թվով ֆայլեր, որոնք կարող են վերականգնվել npm install ով:


Ստեղծեք .gitignore ֆայլ ձեր նախագծի սկզբում.

 echo "node_modules" >> .gitignore

Սա երաշխավորում է, որ node_modules չի հետագծվում git-ով և չի մղվի ձեր պահեստ:

Քայլ 4. Բացառել թեստերը հրապարակված փաթեթից

Մինչև դուք փորձարկումներ կանցկացնեք CI-ի ընթացքում, դուք չեք ցանկանում, որ թեստային ֆայլերը ներառվեն ձեր հրապարակված npm փաթեթում: Սա մաքուր է պահում փաթեթը, ունի փոքր փաթեթի չափ և ապահովում է միայն անհրաժեշտ ֆայլերը առաքվում օգտվողներին:

Ստեղծեք .npmignore ֆայլ արմատային պանակում և ավելացրեք թեստային ֆայլերի անունները:

 // .npmignore __tests__ *.test.js // captures all files in the directory with a .test.js extension


Սա ապահովում է, որ թեստային ֆայլերը ներառված չեն npm publish :

Քայլ 5. Տեղադրեք ձեր կոդը GitHub-ում

  1. Ստեղծեք նոր GitHub պահոց.

Նոր պահեստի ստեղծում


Ստեղծվել է պահոց, կոդ դեռ չկա


  1. Հրել ձեր կոդը

     git init git add . git commit -m "Initial commit" git remote add origin [email protected]:YOUR_USERNAME/alphanumeric-validator.git git push -u origin main 


Տեղական կոդը մղում դեպի Github


Ստեղծվել է պահեստ, տեղական կոդը այժմ վերբեռնված է


Քայլ 5. Նախնական ձեռնարկ Հրապարակել npm-ում

  • Նախքան ավտոմատացումը սկսելը, հաստատեք, որ ձեր փաթեթը կարող է հրապարակվել . տես այստեղ:
  • Այնուհետև ավելացրեք --access public դրոշը, որպեսզի ձեր փաթեթը դարձնի հանրային և հասանելի օգտվողների համար:


 npm login npm publish --access public 


Հրապարակում npm-ին տերմինալից


Հրատարակված այբբենական-վավերացուցիչ

Քայլ 6. GitHub Գործողությունների աշխատանքային հոսքի կարգավորում

Դուք պետք է կազմաձևեք աշխատանքային հոսք, որը կաշխատի յուրաքանչյուր թողարկման իրադարձության վրա, որպեսզի երբ ստեղծեք նոր թողարկում (օրինակ՝ v1.0.1 ):

  • Աշխատանքային հոսքը ստուգում է ձեր կոդը:
  • Տեղադրում է կախվածություն:
  • Անցնում է թեստեր որակ ապահովելու համար:
  • Թարմացնում է package.json թողարկման պիտակից նոր տարբերակին:
  • Հրապարակում է թարմացված փաթեթը npm-ում՝ առանց թեստային ֆայլերի ներառման:


Աշխատանքային հոսքի ֆայլ

Ստեղծեք .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 "[email protected]" 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 }}


Ձեր NPM Token-ի ավելացում GitHub-ում

  • Այցելեք https://www.npmjs.com/settings/:username/tokens/new (Համոզվեք, որ փոխարինում եք :username ձեր իրական օգտանունով)
  • Մուտքագրեք անունը, ընտրեք ավտոմատացում տեսակի համար և ստեղծեք


NPM մուտքի նշանի ստեղծում


  • Դուք կվերահղվեք դեպի նշանների էջ, որտեղ կարող եք պատճենել նշանը:

  • Գնացեք Կարգավորումներ > Գաղտնիքներ և փոփոխականներ > Գործողություններ ձեր GitHub պահեստում:

  • Սեղմեք New Repository Secret-ը և ավելացրեք NPM_TOKEN :


Քայլ 7. Նոր թողարկման ստեղծում

Ենթադրենք, դուք ցանկանում եք ավելացնել README.md v1.0.1 թողարկման համար, և դուք դրել եք այն.

  1. Նոր թողարկման նախագիծ.
    • Գնացեք թողարկումների բաժին ձեր GitHub պահեստում: [ https://github.com/username/repo/releases ]
    • Սեղմեք Նախագծել նոր թողարկում :
    • Սահմանեք «Tag տարբերակը» v1.0.1:
    • Սեղմեք Հրապարակել թողարկումը :


  1. Աշխատանքային հոսքը գործարկվեց. թողարկման իրադարձությունը բռնկվում է: Աշխատանքային ընթացքը,
    • Ստուգում է կոդը:
    • Տեղադրում է կախվածություն:
    • Կատարում է թեստեր: Եթե թեստերը ձախողվեն, աշխատանքը կդադարի, և փաթեթը չի հրապարակվի:
    • Եթե թեստերն անցնեն, այն թարմացնում է package.json-ը 1.0.1 ի:
    • Հրապարակում է 1.0.1 տարբերակը npm-ում՝ բացառելով թեստային ֆայլերը:


  1. Հաստատեք npm-ում. Որոշ ժամանակ անց այցելեք ձեր npm փաթեթի էջը՝ նոր տարբերակը ուղիղ եթերում տեսնելու համար:



Եզրակացություն

GitHub Actions-ի ինտեգրումը ձեր npm հրատարակման աշխատանքային հոսքին ստեղծում է հիանալի CI/CD խողովակաշար: Յուրաքանչյուր նոր թողարկումով փորձարկումների համապարփակ շարք է կատարվում, package.json-ը թարմացվում է ճիշտ տարբերակով, և պարզեցված փաթեթը հրապարակվում է npm-ում՝ առանց ավելորդ ֆայլերի, ինչպիսիք են թեստերը:

Այս մոտեցումը խնայում է ժամանակը, նվազեցնում մարդկային սխալները և մեծացնում է ձեր թողարկումների հուսալիությունը՝ հեշտացնելով մասնակիցներին տեսնել իրենց աշխատանքը անխափան կերպով:

GitHub-ի մեկ թողարկումն այժմ այն ամենն է, ինչ անհրաժեշտ է ամբողջությամբ փորձարկված, պատշաճ տարբերակված փաթեթը npm ռեեստր ուղարկելու համար: