使用source运算符在当前上下文中运行npm脚本是否可行?

4
我将尝试编写一个简单的Node.js命令行界面以更方便地浏览目录。为了简洁起见,假设这就是我要创建的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中运行,随后被终止。我已经阅读了这里关于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?

1个回答

0

一切皆有可能,特别是在 Node 中。 - sobi3ch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接