我将尝试编写一个简单的Node.js命令行界面以更方便地浏览目录。为了简洁起见,假设这就是我要创建的CLI:
test.js
在同一个文件夹中放置这两个文件,然后运行
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中运行,随后被终止。我已经阅读了这里关于source操作符的内容,并发现它的用法如下:. 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?