【发布时间】:2014-05-16 00:36:46
【问题描述】:
我正在尝试编写一个简单的 Node.js CLI 来更轻松地导航目录。为简单起见,假设这是我正在尝试制作的 CLI:
test.js
#!/usr/bin/env node
console.log('hey there');
var exec = require('child_process').exec;
exec('cd ~/code/');
package.json
{
"name": "example",
"version": "0.1.0",
"description": "Example CLI that needs to run in current context",
"bin": {
"myScript": "test.js"
},
"engines": {
"node": "0.10.*",
"npm": "1.2.*"
}
}
在同一个文件夹中,运行 npm link 将创建 CLI。之后,如果我运行myScript,它会输出“hey there”,但不会更改目录。我知道这是因为 myScript 在它自己的子shell 中运行,该子shell 随后被终止。我已经阅读了here 关于源运算符的内容,发现它是这样使用的:
. filename [arguments]
我尝试过使用. myScript 来强制我的代码在当前上下文中运行。但是,通过使用源运算符,代码被解释为 bash 而不是 js。这是我得到的错误:
-bash: /Users/dallinosmun/.nvm/v0.10.21/bin/myScript: line 3: syntax error near unexpected token `('
-bash: /Users/dallinosmun/.nvm/v0.10.21/bin/myScript: line 3: `var exec = require('child_process').exec;'
那么,关于如何让 Node.js CLI 在当前上下文中运行有什么想法吗?
【问题讨论】:
标签: node.js npm command-line-interface