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

标签 node.js npm command-line-interface

我正在尝试编写一个简单的 Node.js CLI 来更轻松地导航目录。为了简单起见,假设这是我要制作的 CLI:

测试.js

#!/usr/bin/env node
console.log('hey there');
var exec = require('child_process').exec;
exec('cd ~/code/');

包.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,它会输出“嘿那里”但不会更改目录。我知道这是因为 myScript 在它自己的子 shell 中运行,随后终止。我读过 here关于源运算符,发现它是这样使用的:

. filename [arguments]

我试过 。 myScript 强制我的代码在当前上下文中运行。但是,通过使用 source 运算符,代码将被解释为 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 在当前上下文中运行有什么想法吗?

最佳答案

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

how do I make node child_process exec continuously

关于node.js - 是否可以使用 source 运算符在当前上下文中运行 npm 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690877/

相关文章:

使用自定义查询将 Mysql 导出通过管道传输到另一个 mysql 服务器

javascript - 如何在 Node.js 应用程序中使用 sql-injection 包?

node.js - 使用 node.js 和 MongoDB 对 Web 应用程序进行 Docker 化时的代码 14

bash - 在后台启动一个进程,执行一个任务,然后在后台杀死进程

windows - 将 Windows 对话框错误消息重定向到控制台

node.js - 跨环境/dist/index.js :42 unexpected token }

node.js - 是否可以从 Mongoose 的文档中获取模型?

node.js - Firebase Node.js SDK 未经身份验证的访问

jquery - 尝试将 jQuery-UI 添加到 Angular 4 应用程序时,TypeError : t. fx 未定义

linux - 如何安装 Node 和 NPM,这样我就不必使用 sudo?