CNode

如何创建一个node命令行工具?

Kkingapple发布于12 年前最后回复12 年前12 回复6435 浏览0 收藏

找不到头绪。。。

查看回复

回复 (12)

Y
yorkie#1·12 年前

你可以创建这样一个文件:

// cli.js
console.log(process.argv);

然后你可以:

$ node cli a

$ node cli a b

$ node cli --options

观察过每一个输出你就能发现所谓的命令行工具其实——解析process.argv里面的内容 然后做出相应的反应。 你可以手动解析,也可以使用一些module来简化你的代码,比如minimistcommander.js

还有另外一种类型的命令行工具,叫交互式命令行工具,如果你在运行node时,不load任何脚本的话,node就是一个这样的CLI,比如:

$ node

> 1 + 2
3

要写出这样的工具,需要使用official module: repl,例子在官方文档写得很清楚了。

Y
yaochun#6·12 年前

####交互式命令行工具

准确地说:

REPL模式(Read-Evaluate-Print-Loop,输入-求值-输出-循环)

Y
yorkie#8·12 年前
引用 yorkie你可以创建这样一个文件: 然后你可以: 观察过每一个输出你就能发现所谓的命令行工具其实——解析process.argv里面的内容 然后做出相应的反应。 你可以手动解析,也可以使用一些modul...

@kingapple 这个是因为windows下有两个.js文件的运行环境, 一个是JScript,一个是node,我想windows默认使用前者,所以才会报错console未定义,而且源也写了是Microsoft JScript. 我对windows不是特别熟,如果是linux下需要在你的cli.js的头上加:

#!/usr/bin/env node

来指定脚本语言的运行环境,你需要自己google一下,对bat也不是特别熟悉,应该是类似可执行脚本(很别扭的说法)?这个文件你应该可以在windows类似/usr/bin的目录下找到的

Y
yorkie#9·12 年前
引用 yaochun交互式命令行工具 准确地说: REPL模式(Read Evaluate Print Loop,输入 求值 输出 循环)

@yaochun 输入/输出不就是交互么,求值代表是交互之下的计算机运算,循环指的是整个交互过程,跟web/native交互一样,我觉得没什么不准确的

K
kingapple#10·12 年前
引用 yaochun交互式命令行工具 准确地说: REPL模式(Read Evaluate Print Loop,输入 求值 输出 循环)

@yorkie 有bat的话,默认会用Node.exe来解析js,否则会用系统默认解释器的,这里使用了M$的,所以报错了。。。

K
kingapple#12·12 年前
引用 yaochun交互式命令行工具 准确地说: REPL模式(Read Evaluate Print Loop,输入 求值 输出 循环)

@yorkie

如何让自己的node包 install后,也自动生成.cmd文件呢?

参与回复
登录后即可参与回复。登录