使用Travis CI发布到NPMJS

时间:2019-03-08 19:09:08

标签: travis-ci npmjs

我已经设置了Travis CI来运行一些脚本,该脚本应该:

  1. 将一些静态页面部署到Github页面
  2. 将NPM软件包部署到npmjs

第1项有效,第2项无效。

这是我的travis.yml文件的样子:

language: node_js
node_js:
 - '10'
script:
 - gulp build
 - gulp npmDist
deploy:
 - provider: pages
    local_dir: dist-site/
    skip_cleanup: true
    github_token: "$GITHUB_TOKEN"
    on:
      branch: master
 - provider: npm
    email: myemail@mydomain.com
    api_key:
      secure: THE-API-KEY-I-GOT-BY-CREATING-A-TOKEN-ON-NPMJS-AND-ENCRYPTING-IT-USING-TRAVIS-ENCRYPT-COMMAND-IN-TERMINAL
    on:
      tags: true
      repo: githubaccount/reponame
      all_branches: true

我通过两种方式触发脚本:  -当我合并到master时,它会部署到GitHub Pages。  -创建标签并推送到主标签时,应将软件包部署到npmjs。

如上所述,文件的第一部分有效,因为它实际上已部署到GitHub Pages。

这是我从npmjs得到的错误:

npm ERR! publish Failed PUT 401
npm ERR! code E401
npm ERR! You must be logged in to publish packages. : package-name

(哦,还有一件奇怪的事:即使明显存在问题,Travis也会返回“ Build Passed”并获得成功状态(绿色))

希望这有意义吗?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

修复了该问题-而不是将其保存在travis.yml文件中:

api_key:
      secure: THE-API-KEY-I-GOT-BY-CREATING-A-TOKEN-ON-NPMJS-AND-ENCRYPTING-IT-USING-TRAVIS-ENCRYPT-COMMAND-IN-TERMINAL

我将其更改为:

api_key: "$NPM_TOKEN"

..并在Travis CI仪表板内部添加了NPM令牌作为环境变量。

(仍然对为什么它不起作用感到好奇,但由于今天我已经在这个问题上浪费了太多时间,所以我不愿意为此做任何事情)

答案 1 :(得分:0)

我遇到了同样的问题,我只是删除了所有先前的密钥,然后再次生成它们,所以我的代码如下:


deploy:
  provider: npm
  email: $NPM_USER
  api_key: $NPM_TOKEN

要创建NPM_TOKEN,您必须:

  1. 转到您的npm个人资料
  2. 代币
  3. 创建令牌
  4. 选择“读取并发布”并创建它。

然后可以在相应项目的env变量中指定它。 密钥不必加密,用户就是您的电子邮件。就是这样。

您将收到类似的通知:

Installing deploy dependencies
dpl.2
Preparing deploy
dpl.3
Deploying application
+ your-artifact@x.x.x