10分钟搞定一个漂亮的Node命令行工具

今天做存储密码功能时,想在命令行测试下md5生成的字符串,于是找工具,试了一两个,不好用。决定自己做一个。初步的功能不必多,就是输入md5 “astring”,输出md5的结果即可。十分简单。


扩展:Linux、Mac下用python或其他任意语言,写个生成md5字符串的脚本。然后软连接到环境变量的目录中,配置一下alias也可以很简单,几分钟搞定。

nodejs的优势在于跨平台,一键安装。

本项目源码发布到npm了,后续会添加更多功能。(以最终安装的源码为准) https://www.npmjs.com/package/tools-cli

安装

1
npm install tools-cli -g

使用

1
md5 yourstring

运行截图

相关库介绍

commander.js

用于简化node命令行编写。提供方便出参数设置,帮助信息设置等。
https://github.com/tj/commander.js

1
npm install commander --save

colors.js

用于命令行作色
https://github.com/Marak/colors.js

1
npm install colors --save

node-md5

md5字符串生成。
https://github.com/pvorb/node-md5

1
npm install md5 --save

编写代码

主要代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env node
var md5 = require('md5');
var colors = require('colors');
var program = require('commander');
program
.version('v' + require('../package.json').version)
.description('a md5 cli tool.')
.arguments('[string]')
.option('-s, --string', 'input a string')
.parse(process.argv);
if (program.args.length == 1) {
console.log(program.args[0] + ' > MD5 Output:'.rainbow);
console.log(md5(program.args[0]).underline.red);
} else if (program.string) {
console.log(program.string + ' > MD5 Output:'.rainbow);
console.log(md5(program.string).underline.red);
} else {
console.log('ERROR input!!!'.rainbow);
}

整合系统环境

将写的脚本整合到系统命令

1.源文件头部添加一行shell头:

1
#! /usr/bin/env node

2.再配置package.json

主要是添加这个: “bin”: { “md5”: “yourjs.js” }

3.执行本地链接命令(当前目录下运行)

1
npm link

发布到npm

发布前最重要的是配置package.json文件。

关于package.json文件配置,可以安装tools-cli后,打开安装路查看。

基本流程

1.注册个账号 https://www.npmjs.com/
2.执行命令 (最重要的是package.json文件里面的配置)

npm init (创建及配置package.json)
npm adduser 添加账户
npm config set registry http://registry.npmjs.org 切换回默认的源(如果切换了淘宝源的话)
npm publish 发布模块. (写好代码与package.josn后, 同步也用这个)
npm unpublish 模块名 –force 删除已经发布的模块
npm whoami 查看当前登录的用户

相关错误

报错: You do not have permission to publish ‘somepackage’.Are you logged in as the corrent user?
原因: 你发布的包名和别人的重名了.
解决: 修改了package.json文件的name选项.

转载请注明出处,有疑问欢迎留言!