npm 制品库
2343 字约 8 分钟
创建制品库
参考 创建制品库
获取制品库地址
参考 获取制品库的地址
创建令牌
云原生构建平台的所有资源(包括代码仓库、制品库、OPENAPI等),都需要通过访问令牌进行操作。 创建令牌
本地开发
配置凭证
有以下三种方式
粘贴以下内容到项目的 package.json 同一级目录下的 .npmrc
替换 <YOUR_TOKEN>
为您的令牌,<REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
# 示例
# registry=https://npm.cnb.cool/cnb/npm_repo/-/packages/
# always-auth=true
# //npm.cnb.cool/cnb/npm_repo/-/packages/:_authToken=29bGg84xqRf3ZweNpYlL92e7tDv
registry=<REPO_URL>
always-auth=true
//<REPO_URL_SUFFIX>:_authToken=<YOUR_TOKEN>
- 设置制品仓库,替换
<REPO_URL>
为制品库地址
# 示例
# npm config set registry https://npm.cnb.cool/cnb/npm_repo/-/packages/
npm config set registry <REPO_URL>
- 使用交互式登录命令,您的 username 为 cnb , password 为访问令牌
npm login
替换 <YOUR_TOKEN>
为您的令牌,<REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
# 示例
# npm config set registry https://npm.cnb.cool/cnb/npm_repo/-/packages/
# npm config set //npm.cnb.cool/cnb/npm_repo/-/packages/:_authToken=29bGg84xqRf3ZweNpYlL92e7tDv
npm config set registry <REPO_URL>
npm config set //<REPO_URL_SUFFIX>:_authToken=<YOUR_TOKEN>
如果你的yarn版本是1.x, 可以使用如下方式配置凭证
粘贴以下内容到项目的 package.json 同一级目录下的 .npmrc
替换 <YOUR_TOKEN>
为您的令牌,<REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
# 示例
# registry=https://npm.cnb.cool/cnb/npm_repo/-/packages/
# always-auth=true
# //npm.cnb.cool/cnb/npm_repo/-/packages/:_authToken=29bGg84xqRf3ZweNpYlL92e7tDv
registry=<REPO_URL>
always-auth=true
//<REPO_URL_SUFFIX>:_authToken=<YOUR_TOKEN>
此命令仅适用于本地推送制品,替换 <REPO_URL>
为制品库地址
# 示例
# yarn config set registry https://npm.cnb.cool/cnb/npm_repo/-/packages/
yarn config set registry <REPO_URL>
yarn publish
# .....
question npm password: 这里输入您的令牌
如果您使用的yarn版本 > 1.x,有两种方案,但是最后都是修改与package.json同级的 .yarnrc.yml
在 .yarnrc.yml 中配置凭据,替换 <REPO_URL>
为制品库地址, <YOUR_TOKEN>
为您的令牌
npmPublishRegistry: "<REPO_URL>" # 推送包的地址
npmRegistryServer: "<REPO_URL>" # 拉取包的地址
npmRegistries: # 配置每个制品库的凭证
"<REPO_URL>":
npmAlwaysAuth: true
npmAuthToken: <YOUR_TOKEN>
替换 <REPO_URL>
为制品库地址, <YOUR_TOKEN>
为您的令牌
yarn config set npmPublishRegistry <REPO_URL> # 推送包的地址
yarn config set npmRegistryServer <REPO_URL> # 拉取包的地址
yarn config set 'npmRegistries[<REPO_URL>].npmAuthToken' <YOUR_TOKEN>
这样操作后会产生这样的 .yarnrc.yml
npmPublishRegistry: "<REPO_URL>"
npmRegistryServer: "<REPO_URL>"
npmRegistries:
"<REPO_URL>":
npmAuthToken: <YOUR_TOKEN>
参考npm, 仅需将命令中的 npm 替换为 pnpm
拉取制品
替换 <PACKAGE_NAME>
,<VERSION>
, <REPO_URL>
# 示例
# npm install express@5.1.0 --registry=https://npm.cnb.cool/cnb/npm_repo/-/packages/
# npm
npm install <PACKAGE_NAME>@<VERSION> --registry=<REPO_URL>
# yarn
yarn add <PACKAGE_NAME>@<VERSION>
# pnpm
pnpm install <PACKAGE_NAME>@<VERSION> --registry=<REPO_URL>
推送制品
- 初始化 package.json,注意替换
<PACKAGE_NAME>
和<VERSION>
{
"name": "<PACKAGE_NAME>",
"version": "<VERSION>",
"description": "",
"main": "index.js",
"author": "",
"license": "MIT"
}
- 执行如下命令发布包,替换
<REPO_URL>
为制品库地址
# <REPO_URL>示例
# https://npm.cnb.cool/cnb/npm_repo/-/packages/
# npm
npm publish --registry=<REPO_URL>
# yarn 版本 > 1.x
yarn npm publish
# yarn 版本 为 1.x
yarn publish --registry=<REPO_URL>
# pnpm
pnpm publish --registry=<REPO_URL>
云原生构建
配置凭证
云原生构建使用令牌有三种方式,参考云原生构建,云原生开发中使用令牌,以下是具体客户端的使用方式
粘贴以下内容到项目的 package.json 同一级目录下的 .npmrc
替换 <REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
# 示例
# registry=https://npm.cnb.cool/cnb/npm_repo/-/packages/
# always-auth=true
# //npm.cnb.cool/cnb/npm_repo/-/packages/:_authToken=${CNB_TOKEN}
registry=<REPO_URL>
always-auth=true
# 第一种方式 使用 CNB_TOKEN
//<REPO_URL_SUFFIX>:_authToken=${CNB_TOKEN}
# 第二种方式 直接使用,替换 <YOUR_TOKEN> 为您的令牌即可
# //<REPO_URL_SUFFIX>:_authToken=<YOUR_TOKEN>
# 第三种方式,密钥仓库,替换 <ENV_NAME> 为您密钥仓库的变量
# //<REPO_URL_SUFFIX>:_authToken=${<ENV_NAME>}
替换 <REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
# 示例
# npm config set registry https://npm.cnb.cool/cnb/npm_repo/-/packages/
# npm config set //npm.cnb.cool/cnb/npm_repo/-/packages/:_authToken=${CNB_TOKEN}
npm config set registry <REPO_URL>
# 第一种方式 使用 CNB_TOKEN
npm config set //<REPO_URL_SUFFIX>:_authToken=${CNB_TOKEN}
# 第二种方式 直接使用,替换 <YOUR_TOKEN> 为您的令牌即可
# npm config set //<REPO_URL>:_authToken=<YOUR_TOKEN>
# 第三种方式,密钥仓库,替换 <ENV_NAME> 为您密钥仓库的变量
# npm config set //<REPO_URL>:_authToken=${<ENV_NAME>}
如果你的yarn版本是1.x, 可以使用如下方式配置凭证
粘贴以下内容到项目的 package.json 同一级目录下的 .npmrc,替换 <REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
# 示例
# registry=https://npm.cnb.cool/cnb/npm_repo/-/packages/
# always-auth=true
# //npm.cnb.cool/cnb/npm_repo/-/packages/:_authToken=${CNB_TOKEN}
registry=<REPO_URL>
always-auth=true
# 第一种方式 使用 CNB_TOKEN
//<REPO_URL_SUFFIX>:_authToken=${CNB_TOKEN}
# 第二种方式 直接使用,替换 <YOUR_TOKEN> 为您的令牌即可
# //<REPO_URL_SUFFIX>:_authToken=<YOUR_TOKEN>
# 第三种方式,密钥仓库,替换 <ENV_NAME> 为您密钥仓库的变量
# //<REPO_URL_SUFFIX>:_authToken=${<ENV_NAME>}
如果您使用的yarn版本 > 1.x,有两种方案,但是最后都是修改与package.json同级的 .yarnrc.yml
npmPublishRegistry: "<REPO_URL>" # 推送包的地址
npmRegistryServer: "<REPO_URL>" # 拉取包的地址
npmRegistries: # 配置每个制品库的凭证
"<REPO_URL>":
npmAlwaysAuth: true
# 第一种方式 使用 CNB_TOKEN
npmAuthToken: ${CNB_TOKEN}
# 第二种方式 直接使用,替换 <YOUR_TOKEN> 为您的令牌即可
# npmAuthToken: <YOUR_TOKEN>
# 第三种方式,密钥仓库,替换 <ENV_NAME> 为您密钥仓库的变量
# npmAuthToken: ${<ENV_NAME>}
yarn config set npmPublishRegistry <REPO_URL> # 推送包的地址
yarn config set npmRegistryServer <REPO_URL> # 拉取包的地址
# 第一种方式 使用 CNB_TOKEN
yarn config set 'npmRegistries[<REPO_URL>].npmAuthToken' ${CNB_TOKEN}
# 第二种方式 直接使用,替换 <YOUR_TOKEN> 为您的令牌即可
# yarn config set 'npmRegistries[<REPO_URL>].npmAuthToken' <YOUR_TOKEN>
# 第三种方式,密钥仓库,替换 <ENV_NAME> 为您密钥仓库的变量
# yarn config set 'npmRegistries[<REPO_URL>].npmAuthToken' ${<ENV_NAME>}
参考npm, 仅需将命令中的 npm 替换为 pnpm
拉取制品
使用.npmrc配置方式可参考如下配置,替换 <REPO_URL>
为制品库地址
main:
push:
- docker:
image: node:22
stages:
- name: npm install
script:
- npm install --registry=<REPO_URL>
使用npm config设置方式可参考如下配置,替换 <REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
main:
push:
- docker:
image: node:22
stages:
- name: npm install
script:
- npm config set registry <REPO_URL>
- npm config set //<REPO_URL_SUFFIX>:_authToken=${CNB_TOKEN}
- npm install --registry=<REPO_URL>
main:
push:
- docker:
image: node:22
stages:
- name: yarn install
script:
- npm install -g corepack
- corepack enable
- corepack prepare yarn@1.22.22 --activate
# 如果yarn版本 > 1.x,同时使用命令行配置,需带下面两行
# - yarn config set npmRegistryServer <REPO_URL>
# - yarn config set 'npmRegistries[<REPO_URL>].npmAuthToken' ${CNB_TOKEN}
- yarn install
参考npm, 仅需将命令中的 npm 替换为 pnpm
推送制品
推荐使用 tencentcom/npm 镜像,将如下内容粘贴到 .cnb.yml
$:
# tag push 时触发
tag_push:
- docker:
image: node:22
stages:
- name: update version
# $CNB_BRANCH 为流水线自带环境变量,为当前提交的tag
# 修改 package.json 中的version为当前tag,但不会提交代码
script: npm version $CNB_BRANCH --no-git-tag-version
- name: npm publish
image: tencentcom/npm
settings:
# CNB_TOKEN_USER_NAME, CNB_TOKEN,CNB_COMMITTER_EMAIL 为流水线自带环境变量
username: $CNB_TOKEN_USER_NAME
token: $CNB_TOKEN
email: $CNB_COMMITTER_EMAIL
registry: <REPO_URL>
folder: ./
fail_on_version_conflict: true
如果您使用的Yarn版本为1.x
$:
# tag push 时触发
tag_push:
- docker:
image: node:22
stages:
- name: install yarn
script:
- npm install -g corepack
- corepack prepare yarn@1.22.22 --activate
- name: update version
# $CNB_BRANCH 为流水线自带环境变量,为当前提交的tag
script: yarn version --new-version=$CNB_BRANCH
- name: yarn publish
script: yarn publish
如果您使用Yarn版本 > 1.x
$:
# tag push 时触发
tag_push:
- docker:
image: node:22
stages:
- name: install yarn
script:
# 需要额外拉取打tag的分支信息
- git pull origin main
- npm install -g corepack
- corepack prepare yarn@4.9.2 --activate
- name: update version
# $CNB_BRANCH 为流水线自带环境变量,为当前提交的tag
script: yarn version $CNB_BRANCH
# 使用命令行配置凭证,需带上下面的stage
# - name: yarn auth
# script:
# - yarn config set npmPublishRegistry <REPO_URL>
# - yarn config set 'npmRegistries[<REPO_URL>].npmAuthToken' ${CNB_TOKEN}
- name: yarn publish
script: yarn npm publish
如果您使用命令行配置密钥,则将如下内容粘贴到 .cnb.yml,替换 <REPO_URL>
为制品库地址,<REPO_URL_SUFFIX>
为制品库地址去掉协议前缀
$:
# tag push 时触发
tag_push:
- docker:
image: node:22
stages:
- name: install pnpm
script:
- npm install --global corepack@latest
- corepack enable pnpm
- name: update version
# $CNB_BRANCH 为流水线自带环境变量,为当前提交的tag
# 修改 package.json 中的version为当前tag,但不会提交代码
script: pnpm version $CNB_BRANCH --no-git-tag-version
- name: login registry
script:
- pnpm config set registry <REPO_URL>
- pnpm config set //<REPO_URL_SUFFIX>:_authToken=${CNB_TOKEN}
- name: pnpm publish
script: pnpm publish --no-git-checks
如果您使用 .npmrc 配置密钥,则将如下内容粘贴到 .cnb.yml
$:
# tag push 时触发
tag_push:
- docker:
image: node:22
stages:
- name: install pnpm
script:
- npm install --global corepack@latest
- corepack enable pnpm
- name: update version
# $CNB_BRANCH 为流水线自带环境变量,为当前提交的tag
# 修改 package.json 中的version为当前tag,但不会提交代码
script: pnpm version $CNB_BRANCH --no-git-tag-version
- name: pnpm publish
script: pnpm publish --no-git-checks
云原生开发
配置凭证
与 云原生构建 配置凭证 相同
配置开发镜像
$:
vscode:
- docker:
image: node:22
可以执行如下命令选择包管理器,替换 <NAME>
和 <VERSION>
为您的包管理器名称和版本
npm install -g corepack
corepack enable
# 示例 corepack prepare yarn@1.22.22 --activate
corepack prepare <NAME>@<VERSION> --activate
拉取制品
与 本地开发 拉取制品 相同
推送制品
与 本地开发 推送制品 相同
更多用法
更多 npm 用法,请查阅 npm 官方文档