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/里为源代码,开发都只维护源代码,然后在发布npm前compile成lib/并发布,而这个lib/目录又不在git版本控制内,这就用到scripts的prepublish勾子,这个勾子表示在发布前执行。比如:
{
"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
travis是linux, 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
appveyor是windows环境下的集成测试,先在 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已经做了
图标
你是不是很羡慕别人项目中的帅帅的绿色小图标?当你做好一成的一些测试后,你也可以的,可以用以下链接生成:
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 启用代理。