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
- 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
- Akaun & Repositori GitHub:
- Anda memerlukan repositori GitHub untuk menyimpan kod dan menjalankan Tindakan GitHub.
- 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.
Mulakan Projek
mkdir alphanumeric-validator cd alphanumeric-validator npm init -y
Kemas kini
package.json
mengikut keperluan. Untukalphanumeric-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" }
- 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.
Pasang Jest
npm install --save-dev jest
Buat Fail Ujian
mkdir tests
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); });
Jalankan Ujian
npm test
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
- Buat Repositori GitHub Baharu:
- Pergi ke https://github.com/new dan buat repositori
alphanumeric-validator
.
- Pergi ke https://github.com/new dan buat repositori
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
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
Lawati https://www.npmjs.com/package/alphanumeric-validator untuk mengesahkan versi awal adalah secara langsung.
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
- Lawati https://www.npmjs.com/settings/:username/tokens/new (Pastikan anda menggantikan
:username
dengan nama pengguna sebenar anda) - Masukkan nama, pilih automasi untuk jenis dan jana
- 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:
- Draf Keluaran Baharu:
- Pergi ke bahagian Keluaran dalam repo GitHub anda. [ https://github.com/username/repo/releases ]
- Klik Draf keluaran baharu .
- Tetapkan "Versi teg" kepada v1.0.1.
- Klik Terbitkan keluaran .
- 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.
- 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.