Node新手路过,想学学NodeJS开发CLI工具,看了下 Writing Command Line Tools with Node这篇文章。
#! /usr/bin/env node
console.log('This is the filesearch script.');
对于类Unix系统可以用代码里第一句的命令,那么Windows下面怎么设置环境变量达到一样的效果?本人是Windows系统工作,对Linux shell 不熟悉,Windows脚本也不太熟悉。诚心求大神指教,或者大家有什么推荐文章?谢谢啦!
使用一个模块commander
来写比较简单,代码直接用官方的例子。准备好package.json
和安装好commander
。接着新建一个bin/demo.bin
,这里直接拿官方的 demo 了:
#!/usr/bin/env node
/**
* Module dependencies.
*/
var program = require('commander');
program
.version('0.0.1')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq-sauce', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
.parse(process.argv);
console.log('you ordered a pizza with:');
if (program.peppers) console.log(' - peppers');
if (program.pineapple) console.log(' - pineapple');
if (program.bbqSauce) console.log(' - bbq');
console.log(' - %s cheese', program.cheese);
然后在package.json
里添加的bin
为:
...
"bin": {
"demo": "./bin/demo"
}
...
最后npm link
一下,就可以直接用demo help
来看到效果了。
先mark
谢谢,研究下,这个
commander
有封装Linux跟Windows下的命令行么?
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\node_modules\bower\bin\bower" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\node_modules\bower\bin\bower" %*
)
上面这段是bower的.我照着那篇文章运行了npm link
生成的.cmd
文件是这样的:
"%~dp0\node_modules\file-search\index.js" %*
生成的不一样。看代码的样子像是找node.exe,没找到去环境变量里面找。这是为什么? 汗,感觉我问题没表达清楚~~
@ShadowInkLee
继续试了下,恶汗,自己犯的错误,关键是我删除了#! /usr/bin/env node
这句后再使用npm link
导致的。因为js文件里面出现一句这样的我不知道是干嘛的,自己自作聪明了。
#! /usr/bin/env node
console.log('This is the filesearch script.');
@ShadowInkLee #! /usr/bin/env node
这一行叫shebang, 见wiki