npm adduser via bash

ke_*_*_wa 20 bash command-line npm

我想通过bash脚本自动执行npm登录过程.

我尝试使用此代码段:

/usr/bin/expect -f - <<EOD
spawn npm adduser
expect "Username:"
send "myUserName\n"
expect "mail: (this IS public)"
send "my@email.com\n"
EOD
Run Code Online (Sandbox Code Playgroud)

但没有运气.

注意:我将使用env变量更改字符串

ke_*_*_wa 24

@AurélienThieriot:谢谢你的提示.

我有两个问题的解决方案:

解决方案1:

export NPM_AUTH_TOKEN=myToken
export NPM_EMAIL=myEmail
Run Code Online (Sandbox Code Playgroud)

~/.npmrc通过以下shell脚本创建/覆盖:

echo "_auth = $NPM_AUTH_TOKEN" > ~/.npmrc
echo "email = $NPM_EMAIL" >> ~/.npmrc
Run Code Online (Sandbox Code Playgroud)

解决方案2:

export NPM_USERNAME=myUsername
export NPM_PASSWORD=myPassword
export NPM_EMAIL=myEmail
Run Code Online (Sandbox Code Playgroud)

我知道问题的顺序.所以我可以做到以下几点:

npm adduser <<!
$NPM_USERNAME
$NPM_PASSWORD
$NPM_EMAIL
!
Run Code Online (Sandbox Code Playgroud)

注意:解决方案2仅在未添加用户时才起作用
否则$NPM_PASSWORD不需要

  • 对于解决方案1,我在运行导出时必须删除`$`. (3认同)
  • 对于解决方案2,导出时删除$. (3认同)

Ser*_*lto 9

这种方式有效,并且期望更高:

/usr/bin/expect <<EOD
spawn npm adduser
expect {
  "Username:" {send "$USERNAME\r"; exp_continue}
  "Password:" {send "$PASSWORD\r"; exp_continue}
  "Email: (this IS public)" {send "$EMAIL\r"; exp_continue}
}
EOD
Run Code Online (Sandbox Code Playgroud)

  • 该死的儿子,像魅力一样工作:) (2认同)

Pie*_*oui 5

对于使用私有注册表(通常用于 CI 目的)的人员来说,直接访问 Rest API 可能是一个解决方案:

curl -XPUT -H "Content-type: application/json" -d '{ "name": "your_username", "password": "your_password" }' 'http://localhost:4873/-/user/org.couchdb.user:your_username'
Run Code Online (Sandbox Code Playgroud)

这就是npm adduser幕后所做的事情。