paint-brush
Cara Menerbitkan Pakej NPM Anda Secara Automatik Menggunakan Tindakan GitHuboleh@kingflamez
sejarah baru

Cara Menerbitkan Pakej NPM Anda Secara Automatik Menggunakan Tindakan GitHub

oleh Oluwole Adebiyi9m2024/12/20
Read on Terminal Reader

Terlalu panjang; Untuk membaca

Mengautomasikan proses penerbitan pakej npm anda dengan penyepaduan dan penghantaran berterusan (CI/CD) memastikan setiap keluaran melalui pintu yang berkualiti. Dalam panduan ini, anda akan belajar cara menyediakan CI/CD untuk pakej npm ringkas—pengesah alfanumerik. Setiap keluaran GitHub baharu mencetuskan ujian, mengemas kini versi pakej dan menerbitkan pakej bersih secara automatik.
featured image - Cara Menerbitkan Pakej NPM Anda Secara Automatik Menggunakan Tindakan GitHub
Oluwole Adebiyi HackerNoon profile picture
0-item


Mengautomasikan proses penerbitan pakej npm anda dengan penyepaduan dan penghantaran berterusan (CI/CD) memastikan bahawa setiap keluaran melalui gerbang kualiti—suite ujian anda—sebelum diterbitkan. Pada masa yang sama, anda boleh mengawal dengan tepat apa yang berakhir dalam pakej terbitan akhir dengan mengecualikan fail ujian. Dalam panduan ini, anda akan belajar cara menyediakan CI/CD untuk pakej npm ringkas—pengesah alfanumerik—supaya setiap keluaran GitHub baharu mencetuskan ujian, mengemas kini versi pakej dan menerbitkan pakej bersih secara automatik kepada npm.


Mengapa Automatikkan Penerbitan npm?

Penerbitan npm manual boleh memakan masa dan terdedah kepada ralat, terutamanya apabila projek anda berkembang dan memperoleh penyumbang. Dengan mengautomasikan proses, anda boleh:

  • Pastikan Kualiti: Jalankan ujian secara automatik sebelum diterbitkan. Jika ujian gagal, versi baharu tidak dikeluarkan.
  • Versi Konsisten: Versi pakej yang diterbitkan sentiasa sepadan dengan teg keluaran.
  • Kerjasama Tanpa Geseran: Penyumbang menyerahkan kod, anda membuat keluaran dan saluran paip melakukan yang lain—tiada kebenaran npm khas diperlukan.


Prasyarat

  1. Node.js & npm:
    • Klik di sini jika anda tidak memasang NodeJS dan NPM.
    • Sahkan pemasangan dengan menjalankan kod di bawah dalam terminal anda.
 node -v npm -v
  1. Akaun & Repositori GitHub:
    • Anda memerlukan repositori GitHub untuk menyimpan kod dan menjalankan Tindakan GitHub.
  2. Akaun NPM & Token Akses:
    • Daftar atau log masuk di npmjs.com dan jana token akses.
    • Tambahkan token akses sebagai rahsia dalam repositori GitHub anda untuk penerbitan automatik.


Langkah 1: Sediakan Projek

Kami akan mencipta pakej alphanumeric-validator mudah yang mengeksport fungsi menyemak sama ada rentetan ialah abjad angka.

  1. Mulakan Projek

     mkdir alphanumeric-validator cd alphanumeric-validator npm init -y
  2. Kemas kini package.json mengikut keperluan. Untuk alphanumeric-validator , ia akan kelihatan seperti ini.

 { "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. Laksanakan Pengesah
 // index.js function isAlphaNumeric(str) { return /^[a-z0-9]+$/i.test(str); } module.exports = isAlphaNumeric;


Langkah 2: Tambah dan Jalankan Ujian Setempat

Ujian memastikan anda tidak menerbitkan kod yang rosak.

  1. Pasang Jest

     npm install --save-dev jest
  2. Buat Fail Ujian

     mkdir tests
  3. Tampalkan kod di bawah dalam fail 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. Jalankan Ujian

     npm test 


Ujian berjaya dijalankan

Ujian lulus? Hebat. Sekarang, kami akan memastikan ujian ini dijalankan dalam CI sebelum diterbitkan.


Langkah 3: Kecualikan Modul Nod daripada Git

Sebelum menerbitkan ke Github, anda ingin mengecualikan node_modules . Anda tidak mahu menyerahkan node_modules kepada kawalan versi, kerana ia mengandungi sejumlah besar fail yang boleh dijana semula oleh npm install .


Buat fail .gitignore pada akar projek anda:

 echo "node_modules" >> .gitignore

Ini memastikan bahawa node_modules tidak dijejaki oleh git dan tidak akan ditolak ke repositori anda.

Langkah 4: Kecualikan Ujian daripada Pakej Diterbitkan

Walaupun anda akan menjalankan ujian semasa CI, anda tidak mahu fail ujian disertakan dalam pakej npm anda yang diterbitkan. Ini memastikan pakej bersih, mempunyai saiz berkas yang kecil dan memastikan hanya fail yang diperlukan dihantar kepada pengguna.

Cipta fail .npmignore dalam folder akar dan tambahkan nama fail ujian.

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


Ini memastikan fail ujian tidak disertakan apabila anda menjalankan npm publish .

Langkah 5: Hos Kod Anda di GitHub

  1. Buat Repositori GitHub Baharu:

Mencipta repositori baharu


Mencipta repositori, tiada kod masuk lagi


  1. Tolak Kod Anda

     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 


Menolak kod tempatan ke Github


Repositori yang dibuat, kod tempatan kini dimuat naik


Langkah 5: Manual Awal Terbitkan ke npm

  • Sebelum memulakan automasi, sahkan pakej anda boleh diterbitkan— lihat di sini.
  • Kemudian, tambahkan bendera --access public untuk menjadikan pakej anda awam dan boleh diakses oleh pengguna.


 npm login npm publish --access public 


Menerbitkan ke npm dari terminal


Pengesah alfanumerik yang diterbitkan

Langkah 6: Menyediakan Aliran Kerja Tindakan GitHub

Anda perlu mengkonfigurasi aliran kerja yang berjalan pada setiap acara keluaran supaya apabila anda membuat keluaran baharu (seperti v1.0.1 ):

  • Aliran kerja menyemak kod anda.
  • Memasang kebergantungan.
  • Menjalankan ujian untuk memastikan kualiti.
  • Kemas kini package.json kepada versi baharu daripada teg keluaran.
  • Menerbitkan pakej yang dikemas kini ke npm tanpa memasukkan fail ujian.


Fail Aliran Kerja

Cipta .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 }}


Menambah Token NPM Anda pada GitHub


Mencipta token akses NPM


  • Anda akan dialihkan ke halaman token, di mana anda boleh menyalin token.

  • Pergi ke Tetapan > Rahsia dan pembolehubah > Tindakan dalam repositori GitHub anda.

  • Klik Rahsia Repositori Baharu dan tambah NPM_TOKEN .


Langkah 7: Buat Keluaran Baharu

Katakan anda mahu menambah README.md untuk keluaran v1.0.1 dan anda telah menolaknya:

  1. Draf Keluaran Baharu:


  1. Aliran Kerja Dicetuskan: Acara keluaran menyala. Aliran kerja,
    • Menyemak kod.
    • Memasang kebergantungan.
    • Menjalankan ujian. Jika ujian gagal, kerja berhenti dan pakej tidak akan diterbitkan.
    • Jika ujian lulus, ia mengemas kini package.json kepada 1.0.1 .
    • Menerbitkan versi 1.0.1 kepada npm, tidak termasuk fail ujian.


  1. Sahkan pada npm: Selepas seketika, lawati halaman pakej npm anda untuk melihat versi baharu secara langsung.



Kesimpulan

Mengintegrasikan Tindakan GitHub ke dalam aliran kerja penerbitan npm anda mewujudkan saluran paip CI/CD yang hebat. Dengan setiap keluaran baharu, satu siri ujian yang komprehensif dijalankan, package.json dikemas kini dengan versi yang betul dan pakej yang diperkemas diterbitkan ke npm—tanpa fail yang tidak diperlukan seperti ujian.

Pendekatan ini menjimatkan masa, mengurangkan ralat manusia dan meningkatkan kebolehpercayaan keluaran anda, memudahkan penyumbang melihat kerja mereka disiarkan secara langsung dengan lancar.

Satu keluaran GitHub kini hanya diperlukan untuk menghantar pakej yang diuji sepenuhnya, versi yang betul kepada pendaftaran npm.