-
开发前的思考
- 一个命令行工具,最基础的功能就是操作文件系统,即创建、移动、查询文件和目录等等,于是乎,我想做一个 "ls" 的工具(列出当前目录下所有的文件或者子目录)。
-
语言选择自然是javascript了,毕竟本文讲的是nodejs
-
作为一个工具,总该要有点变化的,因此我需要读取命令行参数。当用户不输入目标目录时,默认输出当前目录的子目录或者文件
-
用户输入可能是目录,也可能是文件,二者需要分开处理
-
注意事项
-
作为脚本运行的js文件,需要在文件顶部加上
#!/usr/bin/env node
来指明使用node来执行当前文件
-
直接在命令行使用
./index.js
就可以运行该工具,但是感觉上只是一个“可执行文件”,而非一个工具。因此,我将其作为一个项目来开发,即加上package.json文件,并添加
"bin": { "nccp": "./index.js" }
这样的好处在于:
-
全局安装该工具之后,可以直接使用
nccp
来运行
-
可以修改该工具的名称
这样就更“像”一个命令行工具了
-
-
-
发布到npm
既然我想能够作为一个npm包安装在全局变量中,那最好的方式就是发布到npm。当然,我得先注册一个npm账号。然后,
-
在当前项目根目录执行
npm login
-
按照提示登录之后,执行
npm publish
即可发布到npm,这样所有人都可以下载
-
若是提示 “You do not have permission to publish "xxx". ”,这就表示当前要发布的包名称冲突,重新命名。最好的办法是去npm搜索一遍,确保要使用的名字未被占用
-
就是这么简单......附上该工具的github地址——nccp
网友评论