发布npm包时如何避免直接输入账号密码
2FA token 方式
注意: 此方式需要至少有一个包通过npm cli方式发布成功,才能进入这个包的 settings 界面设置Publishing access,设置完之后生成的token是所有包共用的, 不过每个包可以各自决定是否允许使用2FA token方式
前置条件: 手机安装 authenticator 这个 APP,国内用户可以安装authenticate CN

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

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


手机打开authenticator或authenticate 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 方式
- 生成 auth: 通过
账号:密码这种格式的字符串进行 base64 加密得到 - 创建
.npmrc文件 - 在
.npmrc文件进行如下配置
yaml
registry=https://registry.npmjs.org/ // 设置镜像源
# @test:registry=http://npm.test.net // @test开头的包发布到私有镜像源。如果有需要可以加上这句
_auth=xxxxxxx // 用第一步生成的auth
账号密码方式
- 创建
.npmrc文件 - 在
.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加密后密码