
npm-publish高级技巧自定义仓库、标签管理与访问控制详解【免费下载链接】npm-publishGitHub Action to publish to NPM项目地址: https://gitcode.com/gh_mirrors/np/npm-publishnpm-publish 是一个用于在 CI/CD 中自动发布 NPM 包的 GitHub Action当package.json的version字段变化时智能触发发布。本文带你掌握 npm-publish 的三大高级技巧自定义仓库地址、distribution tag 标签管理、访问权限控制让你把包精准地发布到任何 registry。 核心选项速览npm-publish 提供 GitHub Action、JavaScript API 和 CLI 三种用法。除token外与本文主题相关的选项有四个定义在 action.yaml 中选项默认值作用registryhttps://registry.npmjs.org/目标仓库地址taglatestdistribution tag 标签accessnpm 默认包可见性public或restrictedstrategyall版本比较发布策略 这四个选项除了在工作流里通过with传入还可以直接写进package.json的publishConfig字段随包携带、开箱即用。 技巧一自定义仓库地址registry默认的 npm 仓库不够用很多团队会把包发布到公司内部 registry或者 GitHub Package Registry。只需设置registry输入项- uses: JS-DevTools/npm-publishv4 with: token: ${{ secrets.GITHUB_TOKEN }} registry: https://npm.pkg.github.comnpm-publish 会对地址做严格的 URL 校验见 normalize-options.ts格式非法会直接报错避免把包发错地方。让仓库地址跟着包走在package.json中声明后工作流里就完全不用写registry了{ publishConfig: { registry: https://npm.pkg.github.com } }解析优先级在 normalize-options.ts 中一目了然用户传入值 publishConfig声明 内置默认值。️ 技巧二标签管理tagnpm 允许同一个包在多个 tag 下共存latest只是其中之一。npm-publish 的tag选项决定了「和哪个标签比版本、发布到哪个标签」常用于发布 beta 或 next 版- uses: JS-DevTools/npm-publishv4 with: tag: betastrategy比版本更聪明npm-publish 发布前会先对比版本核心逻辑在 compare-versions.tsstrategy选项控制对比规则all默认只要该版本号尚未存在就发布即使是「回退」版本upgrade只有当前版本比标签上的版本更高符合 semver才发布如果你同时维护latest和beta两条线建议对beta标签使用strategy: upgrade防止旧代码覆盖新标签。 技巧三访问控制accessnpm 组织带scope的包默认是restricted——仅组织成员可见。npm-publish 提供access选项显式控制可见性- uses: JS-DevTools/npm-publishv4 with: access: public它的默认值规则值得注意见 options.ts非作用域包默认public作用域包默认restricted但如果历史上发布过public则延续public作用域scope从包名中自动识别解析逻辑在 read-manifest.ts。和registry、tag一样access也支持写进publishConfig。 认证安全token 与临时 .npmrcnpm-publish 不读写你本机的~/.npmrc。它的做法是在临时目录生成一个只含目标仓库和令牌的一次性.npmrc发布结束立即删除见 use-npm-environment.ts。这保证了令牌不落地、不污染环境。两种认证方式任选其一传统令牌提供token如secrets.NPM_TOKEN可信发布OIDCnpm 11.5.1 支持时只需给工作流加permissions.id-token: write连token都可以省略安全性更高 发布前预演与结果回传dry-run不发真的包先跑一遍流程- uses: JS-DevTools/npm-publishv4 with: dry-run: true加上后所有版本对比、校验照常执行只是不真正上传非常适合调试配置。用输出变量驱动后续流程为步骤设置id后可以拿到丰富的发布结果结构定义见 results.ts写入逻辑见 main.ts输出含义type变更类型major/minor/patch/initial/different无发布则为空old-version标签上的旧版本号name/version包名与版本号tag/access/registry实际使用的标签、权限、仓库典型用法检测到major变更时触发额外通知- if: steps.publish.outputs.type major run: echo 发布了主版本 小结需求对应选项推荐配置位置发到私有/公司仓库registrypublishConfig维护 beta / next 版本线tagstrategypublishConfig控制组织包可见性accesspublishConfig调试不真发dry-run工作流掌握 registry、tag、access 三个选项及其与publishConfig的配合npm-publish 就能覆盖绝大多数团队的自动化发布场景。更多细节可查看 README.md 与 CONTRIBUTING.md。【免费下载链接】npm-publishGitHub Action to publish to NPM项目地址: https://gitcode.com/gh_mirrors/np/npm-publish创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考