Skip to content
文章目录

发布npm包时如何避免直接输入账号密码

2FA token 方式

注意: 此方式需要至少有一个包通过npm cli方式发布成功,才能进入这个包的 settings 界面设置Publishing access,设置完之后生成的token是所有包共用的, 不过每个包可以各自决定是否允许使用2FA token方式

前置条件: 手机安装 authenticator 这个 APP,国内用户可以安装authenticate CN

@pzy915/vite-template-cli 包的设置进行说明

以下界面,只会在尚未启用过时,才出现,已启用之后,不会再出现

手机打开authenticatorauthenticate CN这个 APP,扫描上面这个二维码,再将 App 中生成的 Code 填入Enter Code即可

完成上述步骤后,打开我们要发的包的代码库,在项目根目录创建.npmrc文件,写入以下代码:

yaml
registry=https://registry.npmjs.org/
//registry.npmjs.org/:always-auth=true
//registry.npmjs.org/:_authToken=xxxx // xxxx代表刚才我们生成的token

至此,发布 npm 包,就只要执行npm pub命令即可,无需再npm login

停用 2FA

如果要停用2FA这个功能,则进入 npm 个人账号的 Account 界面,按照如下图方式进行操作

auth 方式

  1. 生成 auth: 通过账号:密码这种格式的字符串进行 base64 加密得到
  2. 创建.npmrc 文件
  3. .npmrc文件进行如下配置
yaml
registry=https://registry.npmjs.org/  // 设置镜像源
# @test:registry=http://npm.test.net // @test开头的包发布到私有镜像源。如果有需要可以加上这句
_auth=xxxxxxx // 用第一步生成的auth

账号密码方式

  1. 创建 .npmrc 文件
  2. .npmrc 进行如下配置
yaml
registry=https://registry.npmjs.org/
//registry.npmjs.org/:always-auth=true
//registry.npmjs.org/:username=xxxx  // xxxx代表用户名
//registry.npmjs.org/:password=xxxx // xxxx代表base64加密后密码

参考资料

使用 token 发布 npm 包