【问题标题】:Is it possible to run an npm script in the current context using the source operator?是否可以使用 source 运算符在当前上下文中运行 npm 脚本?
【发布时间】: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


    【解决方案1】:

    这是不可能的,因为 exec 命令启动了一个新进程。 但这是绕过问题的方法的链接:

    how do I make node child_process exec continuously

    【讨论】:

    • 一切皆有可能,尤其是使用 Node.
    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多