Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

都 2020 年了,你还在手动发布 npm 包吗 #15

Open
flytam opened this issue Mar 8, 2020 · 0 comments
Open

都 2020 年了,你还在手动发布 npm 包吗 #15

flytam opened this issue Mar 8, 2020 · 0 comments
Labels
node This issue or pull request already exists

Comments

@flytam
Copy link
Owner

flytam commented Mar 8, 2020

超详细图文教程,npm 接入 travis ci 发包

操作流出

0、注册travis账户,并授权github访问权限
在这里插入图片描述
在这里插入图片描述

1、初始化工作

1.1 安装travis的 cli 工具

$ sudo gem install travis

1.2 项目根目录新建一个空的.travis.yml文件。
在这里插入图片描述
2、获取 npm auth token

npm auth token 的作用就是让 travis 获取你的 npm 权限,有能力进行发布版本。

2.1 本地登陆 npm。(如果已经登陆过可以跳过,没注册的可以在链接注册)

# tips: 如果之前把npm源设置成非官方源的话,需要切回官方源,再登陆
$ npm adduser # 然后输入自己的npm账号信息即可

2.3 获取auth token

文档中介绍了两种获取token的方法,我们选择一种就可以

https://www.npmjs.com/settings/username/tokens/create new token。选择read and publiush.复制 token
在这里插入图片描述

然后使用travis cli对生成 npm 配置(这一步需要在项目根目录进行)

# 先登陆
$ travis login --pro # 然后输入信息即可

这一步,有可能因为rubycli的版本问题会导致no implicit conversion of nil into String.for a full error report, run travis report --pro的失败。issue。这时候我们可以直接到travis用户设置中中,复制我们的API authentication token,手动添加到~/.travis/config.yml文件。

在这里插入图片描述
在这里插入图片描述

验证是否登陆成功

$ travis accounts --pro 
flytam (Flytam): not subscribed, 44 repositories # 说明成功了
$ travis setup npm  --pro# 生成npm配置,有一步的api key就是输入的刚才的`npm auth token`,选择`加密`,然后会自动生成类似如下的内容在yml中

完成后,会生成如下的初始配置。表示master上的打tag都会触发npm发包的操作

language: node_js
node_js:
    - "12.13"
deploy:
    provider: npm

    email: tanjiahui2015@foxmail.com
    api_key:
        secure: xxxxx
    on:
        tags: true
        branch: master
        repo: flytam/babel-plugin-resolve-config-json

此时,执行npm version xxx,会按如下规则,自动 commit+tag,推送到远程,即可触发自动发布。方便起见可以我们设置 npm 钩子。(postversion 的意思就是,输入完npm version xx后,会自动执行的命令)

# npm 版本号
// version = v1.0.0
npm version patch
// v1.0.1
npm version prepatch
// v1.0.2-0
npm version minor
// v1.1.0
npm version major
// v2.0.0
 "scripts": {
     // 每次打version tag后,把tag推送到远程,也就触发了CI发包了
    "postversion": "git push --follow-tags"
  }

此时,到githubCI上可以,看到,我们的操作成功了
在这里插入图片描述
在这里插入图片描述

有可能遇到的坑总结

  • npm登陆记得切回官方源

如果之前切换了taobao源等相关非官方源,会导致npm登陆、发布失败,执行npm config set registry http://www.npmjs.org切换回官方源。(推荐使用nrm对源就行管理)

  • 上文所有提到的所有涉及travis cli的命令都需要加pro,(这里文档也没写清楚,很容易踩坑。。自己就是这里掉坑了)代表是我们使用travis-ci.com而不是travis-ci.orgcomorg采用了不同的方案,如果com使用了没添加--pro参数的命令,会导致发布失败等错误。(如果旧项目使用了travis-ci.org,可以一键迁移到travis-ci.com,官方公告中也说明新项目只能使用travis-ci.com)。

  • travis login --pro失败。需要手动配置api token,上文已经提到过

原文地址,码字不易,你的点赞是我最大的动力

@flytam flytam added the Go label Mar 8, 2020
@flytam flytam added node This issue or pull request already exists and removed Go labels Jun 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
node This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

1 participant