使用react-hook-use-cta 使用Github Actions发布NPM包
react-hook-use-cta dev(第 4 部分系列)
1 🚀 react-hook-use-cta v2 发布!🚀2 为 react-hook-use-cta 选择一个打包器3 使用 React-hook-use-cta 使用的 Github Actions 发布 NPM 包4 使用 react-hook-use-cta 使用的 Github Actions 发布 JSR 包概述
我将介绍以下内容:
新平台
现在您有了捆绑构建系统,请开始设置 NPM 来接收您的包。
如果你还没有注册,请通过以下方式完成注册流程
https://www.npmjs.com/signup
然后再继续。
确保使用 TOPT 启用多因素身份验证以提高安全性。如果没有它,本教程将无法进行。如果您错过了这部分,您可以从您的个人资料页面启用它。
`https://www.npmjs.com/settings/your-account-name/profile`
初始化
如果你尚未创建 `package.json`,则可以通过 npm init 完成该过程
npm init
在生成文件之前会要求您填写调查问卷。
npm init -y
创建不包含问卷的文件。
包名.json
以下为最低限度。
请将引用替换为:
{ "author": { "name": "Your name" }, "bugs": { "url": "https://github.com/your-account/your-package-name/issues" }, "dependencies": { }, "description": "Sweet package", "devDependencies": { "@parcel/bundler-library": "2.13.3", "@parcel/packager-ts": "2.13.3", "@parcel/transformer-typescript-types": "2.13.3", "@types/node": "22.10.3", "@types/react": "19.0.2", "parcel": "2.13.3", "react": "19.0.0", "rimraf": "6.0.1", "typescript": "5.7.2" }, "exports": { "import": "./dist/esm/index.mjs", "require": "./dist/cjs/index.js", "types": "./dist/types.d.ts" }, "files": [ "dist", "src" ], "homepage": "https://github.com/your-account/your-package-name", "keywords": [ "react", "typescript" ], "license": "MIT", "name": "your-package-name", "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "peerDependencies": { "@types/react": ">= 16.8.0 || >= 17.0.0 || >= 18.0.0 || >= 19.0.0", "react": ">= 16.8.0 || >= 17.0.0 || >= 18.0.0 || >= 19.0.0" }, "peerDependenciesMeta": { "@types/react": { "optional": true } }, "repository": { "type": "git", "url": "git+https://github.com/your-account/your-package-name.git" }, "sideEffects": false, "source": "src/index.ts", "types": "dist/types.d.ts", "scripts": { "build": "rimraf dist && parcel build --log-level verbose", "postversion": "git push && git push --follow-tags", "version": "npm run build && git add -A dist", "version:major": "npm version major", "version:minor": "npm version minor", "version:patch": "npm version patch", "version:prerelease": "npm version prerelease --preid=pre" }, "version": "0.0.0", }
大部分都是标准的,但我想强调一下
"files": [ "dist", "src" ],
这可以防止发布您的软件包在安装时不需要包含的额外文件。
就我而言,唯一发布的文件是
dist/ src/ LICENSE README.md package.json
笔记:
`src/` 可能不需要,但我喜欢将其包括在内以供参考。
注意 注意:
我喜欢用 `--preid=pre` 来标记我的预发布版本,但你可以选择其他内容或者不包括它。
设置说明
您可以在设置中包含一些额外内容,例如 eslint、husky、test 等,但我不想用太多信息来淹没它。我可以在此单独发布更多信息。
Github Actions
他们的市场上有可用的 github 操作,但我想创建一个您可以管理的工作流程。
`.github/workflows/publish-package.yml`
name: Publish to package registry on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: publish: runs-on: ubuntu-latest permissions: contents: read id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: "lts/*" registry-url: 'https://registry.npmjs.org' cache: npm - name: Restore cache uses: actions/cache@v4 with: path: | ~/.npm key: ${{ runner.os }}-publish-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-publish- - name: Install npm dependencies run: npm ci - name: Publish to npm run: npm publish --provenance --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
一个关键的要点是“--provenance --access public”标志。
它们是提高供应链安全性的重要标志。如果没有它们,这个包就不会从 Github 发布。
欲了解更多信息,请阅读生成出处声明
验证_TOKEN
https://dev.to/astagi/publish-to-npm-using-github-actions-23fn 对设置令牌有很好的解释。我将令牌命名为“NPM_AUTH_TOKEN”以匹配“env”
收尾
提交并推送更改到您的仓库。现在您可以看到您的工作流程,

选择要发布的分支或标签,

并点击运行工作流

接下来,我将介绍如何发布到 Javascript Registry。