找不到头绪。。。
你可以创建这样一个文件:
// cli.js
console.log(process.argv);
然后你可以:
$ node cli a
$ node cli a b
$ node cli --options
观察过每一个输出你就能发现所谓的命令行工具其实——解析process.argv
里面的内容 然后做出相应的反应。
你可以手动解析,也可以使用一些module来简化你的代码,比如minimist和commander.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$的,所以报错了。。。
如何让自己的node包 install后,也自动生成.cmd文件呢?