Node.js 与Travis CI一起发布到npm
如何使用Travis CI向npm发布?我试过以下方法。travis.yml:Node.js 与Travis CI一起发布到npm,node.js,npm,travis-ci,Node.js,Npm,Travis Ci,如何使用Travis CI向npm发布?我试过以下方法。travis.yml: language: nodejs node_js: - '6' - '6.1' - '5.11' before_script: - npm install -g nodeunit script: nodeunit deploy: provider: npm email: my_email api_key: "encrypted" 但当涉及到npm位时,我得到: npm ERR! publish Fail
language: nodejs
node_js:
- '6'
- '6.1'
- '5.11'
before_script:
- npm install -g nodeunit
script: nodeunit
deploy:
provider: npm
email: my_email
api_key: "encrypted"
但当涉及到npm位时,我得到:
npm ERR! publish Failed PUT 400
npm ERR! Error: Not found : package-name
有什么想法吗
更新
与
我得到另一个错误:
NPM API key format changed recently. If your deployment fails, check your
API key in ~/.npmrc.
http://docs.travis-ci.com/user/deployment/npm/
~/.npmrc size: 53
env: <this is my unencrypted api key>: No such file or directory
现在它工作了 有些事情可能会出问题。首先,您是否检查了您的
package.json
并确保有name
属性?或者名称是否与现有npm包冲突?错误消息表明那里有问题
但还有另一个问题。您的API密钥似乎是字符串literal“encrypted”
,除非您只是将其用作本例的占位符。它应该是这样的:
provider: npm
email: my.email@gmail.com
api_key:
secure: "Esiel6Dws/vjwNshQ/nmx43+7/lpqsl8Dkd ..."
skip_cleanup: true
还要注意skip_cleanup
属性。如果您想发布构建的任何工件,您应该包括以下内容
可以使用进行加密。请参见和命令
有关工作示例,请参见GitHub上项目的my file on
最后,确保您的API密钥是正确的。在登录到npm的计算机上,检查~/.npmrc
文件
nano ~/.npmrc
然后找到以
//registry.npmjs.org/:\u authToken=
开头的行。确保将此令牌用作.travis.yml
中的API密钥。只要您在该计算机上登录到npm,该令牌将一直有效。可能会出现一些问题。首先,您是否检查了您的package.json
并确保有name
属性?或者名称是否与现有npm包冲突?错误消息表明那里有问题
但还有另一个问题。您的API密钥似乎是字符串literal“encrypted”
,除非您只是将其用作本例的占位符。它应该是这样的:
provider: npm
email: my.email@gmail.com
api_key:
secure: "Esiel6Dws/vjwNshQ/nmx43+7/lpqsl8Dkd ..."
skip_cleanup: true
还要注意skip_cleanup
属性。如果您想发布构建的任何工件,您应该包括以下内容
可以使用进行加密。请参见和命令
有关工作示例,请参见GitHub上项目的my file on
最后,确保您的API密钥是正确的。在登录到npm的计算机上,检查~/.npmrc
文件
nano ~/.npmrc
然后找到以
//registry.npmjs.org/:\u authToken=
开头的行。确保将此令牌用作.travis.yml
中的API密钥。只要您在该计算机上登录到npm,该令牌将一直有效。我看到您已解决问题,但我想分享我的工作解决方案:
首先,我生成了一个npm令牌。
简单地说,我已经在我的电脑上用npm login
登录到npm,然后用cat~/.npmrc
获取它
然后我向travis添加了一个Environment变量:
最后,我添加到.travis.yml
:
deploy:
provider: npm
email: my-email@provider.com
api_key: $NPM_TOKEN
on:
tags: true
只有在构建成功并且将任何标记添加到git存储库时,才会将其发布到npm存储库中(因此您只能在需要时发布)。我看到您已经解决了问题,但我想分享我的工作解决方案: 首先,我生成了一个npm令牌。 简单地说,我已经在我的电脑上用
npm login
登录到npm,然后用cat~/.npmrc
获取它
然后我向travis添加了一个Environment变量:
最后,我添加到.travis.yml
:
deploy:
provider: npm
email: my-email@provider.com
api_key: $NPM_TOKEN
on:
tags: true
只有在构建成功并且将任何标记添加到git存储库时,才会将其发布到npm存储库(因此您只能在需要时发布)。该包已经手动发布,我只是尝试使用travis自动更新它。还有,钥匙和电子邮件都是对的,我只是把它们占了个位置。如果尝试添加secure,请查看发生了什么与手动添加
secure
不同,我建议只使用Travis CLI加密您的密钥,这将为您做到这一点travis encrypt$API_KEY——添加deploy.API_KEY
,另一种可能是存在版本冲突。你的package.json
中的版本可能已经发布了吗?好吧,我只能继续猜测,但我认为我们正在取得进展。你是否检查了你的~/.npmrc
,并确保你使用的API键与以//registry.npmjs.org/:\u authToken=
开头的那一行匹配?让我们看看。包已经手动发布了,我正在尝试用travis自动更新它。还有,钥匙和电子邮件都是对的,我只是把它们占了个位置。如果尝试添加secure,请查看发生了什么与手动添加secure
不同,我建议只使用Travis CLI加密您的密钥,这将为您做到这一点travis encrypt$API_KEY——添加deploy.API_KEY
,另一种可能是存在版本冲突。你的package.json
中的版本可能已经发布了吗?好吧,我只能继续猜测,但我认为我们正在取得进展。您是否检查了您的~/.npmrc
,并确保您使用的API键与以//registry.npmjs.org/:\u authToken=
开头的一行匹配?让我们来看看。