var assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
});
执行
$ ./node_modules/mocha/bin/mocha
Array
#indexOf()
✓ should return -1 when the value is not present
1 passing (9ms)
Table of Contents generated with DocToc
前言
准备工作
版本号是我当前使用的版本,可自行选择
Hello World
分4步:
npm link
nhw
=>hello world
touch index.js
创建一个index.js文件,内容如下:用
npm init
创建一个package.json文件,之后修改成如下:内容详解
index.js
http://stackoverflow.com/questions/33509816/what-exactly-does-usr-bin-env-node-do-at-the-beginning-of-node-files
这句话是一个shebang line实例, 作用是告诉系统运行这个文件的解释器是node; 比如,本来需要这样运行
node ./file.js
,但是加上了这句后就可以直接./file.js
运行了package.json
npm link命令
执行后,控制台里面会有以下输出:
解释:创建了2个软链接分别放到系统环境变量$PATH目录里,nhw命令和npmhellworld模块。
npm link
在用户使用的场景下是不需要执行的,用户使用npm i -g npmhellworld
命令安装即可。发布项目到npm官网供大家使用
设置npm用户名,没有的话先到npm官方网站注册一个:
项目根目录运行:
注意:
如何处理命令行参数
当下比较流程的几个工具对比
这边使用yargs
请看之前我实战一段代码
大概是这个样子:
效果:
单元测试
推荐使用mocha
执行
让你的项目显得正规(github badges)
实际效果就是这些小图标:
这里可以找到各式各样的badges: https://github.com/badges/shields
持续集成(CI)和代码覆盖率
travis-ci:
.travis.yml
这个文件, 并写好简单的配置在travis设置成功后,继续覆盖率的处理:
package.json
中的测试脚本常用的库
shelljs:
chalk
参考资料
http://javascriptplayground.com/blog/2015/03/node-command-line-tool/ https://medium.freecodecamp.com/writing-command-line-applications-in-nodejs-2cf8327eee2#.3yg7f98dv http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html https://gist.github.com/coolaj86/1318304