12月20, 2015

github持续集成和npm的一些分享

由于最近一直在github上提交代码,并发布npm包,下面分享下使用这些的一些心得。

npm

npm常用的命令操作百度搜出来的都一堆堆的。我只说下我感觉不同或者帅的地方

scripts

合理的利用npm run命令,真心好用,用法是在package.json里添加scripts配置,如:

{
 "scripts": {
 "check": "fecs check src/ test/",
 "test": "mocha --reporter spec --timeout 5000 --recursive test/",
 "rm": "rm -rf tmep/"
 }
}

然后可以执行npm run查看目前可运行命令的集合,执行npm run CLI-name来执行这条命令。

需要注意一点是,你非全局安装(只在当前目录安装)了一个可执行的包,比如pm2,你直接在命令行里执行pm2是不行的,你必须./node_modules/pm2/bin/pm2这样执行,但scripts里就可以直接pm2执行,并且这个pm2不用全局安装,这个简直爽翻了〜

scripts hook

我叫她为hook

可以绑定hook在某个状态时触发命令,常见的是src/里为源代码,开发都只维护源代码,然后在发布npmcompilelib/并发布,而这个lib/目录又不在git版本控制内,这就用到scriptsprepublish勾子,这个勾子表示在发布前执行。比如:

{
 "scripts": {
 "compile": "babel --optional runtime --loose all --stage 0 --modules common src/ --out-dir lib/",
 "prepublish": "npm run compile"
 }
}

更新的hook点这里: npm scripts

.npmignore

这是npm发布时的忽略配置文件,配置语法同.gitignore,并且加上.gitignore文件就可以做到上面 hook 的效果了

持续集成

单元测试 - mocha

mocha 是测试框架,使用她可以非常轻松的编写测试用例,具体语法看官网就ok了,运行的命令如:

{
 "test": "mocha --reporter spec --timeout 5000 --recursive test/"
}

代码覆盖率 - istanbul

使用mocha编写测试用例,使用 istanbul 运行mocha会生成代码覆盖率,运行命令如:

{
 "test-cov": "istanbul cover ./node_modules/mocha/bin/_mocha -- -t 5000 --recursive -R spec test/"
}

以上都是本地可以运行,下面说下在github上运行持续集成


集成测试 - travis-ci

travislinux, osx环境下的集成测试,在 https://travis-ci.org/ 平台上绑定github账号并添加项目到平台上,然后在你项目里添加配置文件:/.travis.yml,内容大概如:

# 语言
language: node_js
# 要测试的nodejs版本
node_js:
 - '0.12'
 - '4'
 - '5'
# 是否sudo身份
sudo: false
# 运行的脚本,这个脚本必须你本地能跑通,且通过
script:
 - "npm run test-cov"

然后在你push动作后就可以自动测试了

代码覆盖率 - coveralls

首先在 https://coveralls.io/ 关联并添加项目,然后修改travis的配置,添加结果上报的代码:

# 在脚本运行完后的命令,这里把travis结果提交给coverage
after_script: "npm install coveralls && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"

windows集成测试 - appveyor

appveyorwindows环境下的集成测试,先在 https://ci.appveyor.com/ 关联并添加项目,然后添加配置文件:/appveyor.yml,内容大概如:

environment:
 matrix:
 # 要测试的nodejs版本
 - nodejs_version: "0.12"
 - nodejs_version: "4"
 - nodejs_version: "5"
# 忽略tag提交
skip_tags: true
install:
 # 安装上面的nodejs版本,这里感觉没有travis帅
 - ps: Install-Product node $env:nodejs_version
 # 安装依赖
 - npm install
build: off
test_script:
 # 这里是在控制台打印下版本号,方便有错时追查
 - node --version
 - npm --version
 # 运行测试
 - npm run test
version: "{build}"

需要注意的是,appveyor运行的测试只需要测试代码即可,不用再测试覆盖率了,因为travis已经做了

图标

你是不是很羡慕别人项目中的帅帅的绿色小图标?当你做好一成的一些测试后,你也可以的,可以用以下链接生成:

  1. http://shields.io/
  2. https://yanni4night.github.io/badge.html

links

本文链接:https://xuexb.com/post/ci-npm.html

-- EOF --

发表于 2015年12月20日 22:28:00 ,添加在分类 前端技术 下 ,并被添加「 单元测试 测试覆盖率 ci npm script coveralls istanbul travis-ci github 」标签 ,最后修改于 2017年03月29日 21:22:28

提醒: 本文最后更新于 3207 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。

AltStyle によって変換されたページ (->オリジナル) /