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: Jalankan ujian secara automatik sebelum diterbitkan. Jika ujian gagal, versi baharu tidak dikeluarkan. Pastikan Kualiti: Versi pakej yang diterbitkan sentiasa sepadan dengan teg keluaran. Versi Konsisten: Penyumbang menyerahkan kod, anda membuat keluaran dan saluran paip melakukan yang lain—tiada kebenaran npm khas diperlukan. Kerjasama Tanpa Geseran: Prasyarat Node.js & npm: Klik jika anda tidak memasang NodeJS dan NPM. di sini 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 dan jana token akses. npmjs.com Tambahkan token akses sebagai rahsia dalam repositori GitHub anda untuk penerbitan automatik. Langkah 1: Sediakan Projek Kami akan mencipta pakej mudah yang mengeksport fungsi menyemak sama ada rentetan ialah abjad angka. alphanumeric-validator Mulakan Projek mkdir alphanumeric-validator cd alphanumeric-validator npm init -y Untuk , ia akan kelihatan seperti ini. Kemas kini package.json mengikut keperluan. 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" } 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 . Anda tidak mahu menyerahkan kepada kawalan versi, kerana ia mengandungi sejumlah besar fail yang boleh dijana semula oleh . node_modules node_modules npm install pada akar projek anda: Buat fail .gitignore echo "node_modules" >> .gitignore Ini memastikan bahawa tidak dijejaki oleh git dan tidak akan ditolak ke repositori anda. node_modules 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 dalam folder akar dan tambahkan nama fail ujian. .npmignore // .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 dan buat repositori . https://github.com/new alphanumeric-validator Tolak Kod Anda 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 Langkah 5: Manual Awal Terbitkan ke npm Sebelum memulakan automasi, sahkan pakej anda boleh diterbitkan— lihat di sini. Kemudian, tambahkan bendera untuk menjadikan pakej anda awam dan boleh diakses oleh pengguna. --access public npm login npm publish --access public Lawati untuk mengesahkan versi awal adalah secara langsung. https://www.npmjs.com/package/alphanumeric-validator 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 kepada versi baharu daripada teg keluaran. package.json 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 "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 }} Menambah Token NPM Anda pada GitHub Lawati (Pastikan anda menggantikan dengan nama pengguna sebenar anda) https://www.npmjs.com/settings/:username/tokens/new :username Masukkan nama, pilih automasi untuk jenis dan jana Anda akan dialihkan ke halaman token, di mana anda boleh menyalin token. Pergi ke dalam repositori GitHub anda. Tetapan > Rahsia dan pembolehubah > Tindakan Klik dan tambah . Rahsia Repositori Baharu NPM_TOKEN Langkah 7: Buat Keluaran Baharu Katakan anda mahu menambah untuk keluaran dan anda telah menolaknya: README.md v1.0.1 Draf Keluaran Baharu: Pergi ke bahagian dalam repo GitHub anda. [ ] Keluaran https://github.com/username/repo/releases Klik . Draf keluaran baharu Tetapkan "Versi teg" kepada v1.0.1. Klik . Terbitkan keluaran Acara keluaran menyala. Aliran kerja, Aliran Kerja Dicetuskan: 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 kepada npm, tidak termasuk fail ujian. 1.0.1 Selepas seketika, lawati halaman pakej npm anda untuk melihat versi baharu secara langsung. Sahkan pada npm: 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. kini hanya diperlukan untuk menghantar pakej yang diuji sepenuhnya, versi yang betul kepada pendaftaran npm. Satu keluaran GitHub