如何创建一个node命令行工具?
发布于 10 年前 作者 kingapple 5956 次浏览 最后一次编辑是 8 年前

找不到头绪。。。

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,例子在官方文档写得很清楚了。

@yorkie 需要的是可以install -g,并且直接从命令行支持的命令额,肿么搞?

@yorkie 是否需要编写一个cli.bat?install -g后可以直接使用cli命令?

@kingapple 你只需要在package里面加入:

{
  "bin": {
    "cli name you expect": "the path of cli source file"
  }
}

npm会自动帮你完成背后的一系列操作

@yorkie 。 会把js文件加入路径,但是好像没有自动生成bat文件啊:(

没有从命令行输出任何东西,而是出错鸟:(

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

准确地说:

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

@yaochun 如何添加bat文件?

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

#!/usr/bin/env node

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

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

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

@yorkie

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

回到顶部