本文使用kimi对文章进行润色处理
在使用 GitHub 工作流发布 npm 包时,手动管理版本号的方式比自动更新版本号更加灵活和可靠。以下是一个基于手动推送 tag 触发 GitHub 工作流的示例,适用于同时发布到 GitHub Packages 和 npm 官方仓库。
GitHub 工作流配置
触发条件
通过手动推送带有版本号的 tag(如 v1.0.0)来触发工作流。
name: Publish Package
on:
push:
tags:
- 'v*' # 匹配所有以 v 开头的标签(如 v1.0.0)
工作流步骤
-
Checkout 代码
检出代码以便后续操作。- name: Checkout Code uses: actions/checkout@v4 -
设置 Node.js 环境
配置 Node.js 环境,指定 Node.js 版本。- name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 -
缓存 Node 模块
使用缓存加速依赖安装过程。- name: Cache Node Modules uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} -
安装依赖
使用npm ci安装项目依赖。- name: Install Dependencies run: npm ci -
构建项目
执行构建命令,生成可发布的包。- name: Build Package run: npm run build -
发布到 GitHub Packages
将包发布到 GitHub Packages。- name: Publish to GitHub Packages run: | echo "//npm.pkg.github.com/:_authToken=${{ secrets.GH_PACKAGES_TOKEN }}" > .npmrc npm publish env: NODE_AUTH_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }} -
发布到 npm 官方仓库
将包发布到 npm 官方仓库。- name: Publish to npm run: | sed -i 's/"name": "@scope\/package-name"/"name": "package-name"/g' package.json echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc npm publish --access public --registry=https://registry.npmjs.org git checkout package.json
通过git推送标签触发工作流
git tag v1.1.0
git push origin v1.1.0
完整代码
name: Publish Package
on:
push:
tags:
- 'v*' # 匹配所有以 v 开头的标签(如 v1.0.0)
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Cache Node Modules
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
- name: Install Dependencies
run: npm ci
- name: Build Package
run: npm run build
- name: Publish to GitHub Packages
run: |
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GH_PACKAGES_TOKEN }}" > .npmrc
npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }}
- name: Publish to npm
run: |
sed -i 's/"name": "@scope\/package-name"/"name": "package-name"/g' package.json
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
npm publish --access public --registry=https://registry.npmjs.org
git checkout package.json
382

被折叠的 条评论
为什么被折叠?



