Tag: 命令行界面

如何将STDIN传递给node.jssubprocess

我正在使用包装节点的pandoc库。 但我不知道如何将STDIN传递给subprocess`execFile … var execFile = require('child_process').execFile; var optipng = require('pandoc-bin').path; // STDIN SHOULD GO HERE! execFile(optipng, ['–from=markdown', '–to=html'], function (err, stdout, stderr) { console.log(err); console.log(stdout); console.log(stderr); }); 在CLI上它看起来像这样: echo "# Hello World" | pandoc -f markdown -t html 更新1 试图让它与spawn一起工作: var cp = require('child_process'); var optipng = require('pandoc-bin').path; var child = cp.spawn(optipng, ['–from=markdown', '–to=html'], […]

有没有一个模块获取用户input从node.js命令行?

首先:我不是指从process.argv数组中parsing参数和选项,而是提示用户并处理input/输出。 我已经浏览了Node.js官方模块列表,没有发现任何提及input的部分或小节。 实际上,在该页面上search“input”只会得到1个与YAML有关的结果。 无论如何,我想cli的input应该是asynchronous的,我已经解决了这个问题之前使用stdin.on('data')是凌乱的至less说。 这似乎是一个节点模块,可以带来额外的好东西,如进度条,旋转器,彩色输出,inputvalidation等完美的任务。 这里可能有一些模块,但我找不到任何一个。 帮帮我!! (为了澄清,我需要的唯一function是简化处理用户input)

我如何redirectstdout祝福?

长话短说:我想为开发守护进程构build一个CLI。 守护进程输出不同types的信息到标准输出,我想将这些信息以可滚动的方式传递给屏幕区域中的用户。 我正在努力获得标准的祝福。 下面简单的原型,其中缓冲stdout,所以信息永远不会完整。 var blessed = require('blessed'); var screen = blessed.screen(), body = blessed.box({ top: 1, left: 0, width: '100%', height: '99%' }), statusbar = blessed.box({ top: 0, left: 0, width: '100%', height: 1, style: { fg: 'white', bg: 'blue' } }); screen.append(statusbar); screen.append(body); screen.key(['escape', 'q', 'C-c'], function(ch, key) { return process.exit(0); }); function […]

对npm使用不同的文件名比“package.json”

有没有办法告诉npm从命令行使用不同的文件比“package.json”? 编辑: 谢谢您的回答。 我已经检查过文档,希望有一个解决方法或一个非文件的方式来实现这一点。 那么我会想到其他的东西。

节点subprocess产生标准输出返回为空

我正在编写一个Yeoman生成器,并使用child_process.spawn()(通过yeoman的spawnCommand() – 请参阅https://github.com/yeoman/generator/blob/master/lib/actions/spawn_command.js ) 我的代码如下所示: var list = this.spawnCommand('npm', ['list', 'sails'], {stdio: 'pipe'}); list.stdout.on('data', /* callback here that wants to consume the command's output */); 我可以看到list.stdio存在,它有[0,1,2]作为键。 他们每个是空(或未定义)。 即,logging_.keys(list).join()输出,, 。 list.stdout.on()给我一个exception,说明stdout为空。 我需要完成的是检查是否安装了特定的软件包,并查看版本号是什么。 但是我后来还需要做其他的事情来parsingCLI命令的输出(例如,git log output),所以我需要一个通用的解决scheme。 .spawn()看起来像我想要的,但我所看到的例子似乎表明,标准输出应该是有一个.on()方法的东西。 例如,这里给出的是: http : //nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options ,它显示了运行ls -lh /usr 。 我错过了一些简单的东西吗 我想知道如果我运行的命令没有返回任何输出,如果这意味着标准输出将为空。 如果是这种情况,那么我只需要确定可能没有输出的命令,并且在尝试使用它之前检查以确保stdout不为空。 编辑实际上,npm list命令的输出显示在命令行上,但在我用来诊断问题(在.spawnCommand()调用之后和.spawnCommand()调用之前的日志语句之后。但是我需要在代码中访问它 – 让它在命令行上显示出来(除了让我知道进程成功运行CLI命令外)。

Node.js多行input

我想提示用户input,让用户input多行文本,在每行之间敲入回车,然后按CTRL + D或类似的东西终止input。 使用“按键”,我可以捕捉EOF,但是我将不得不手动处理所有回显,退格处理,terminal转义序列等。 如果我可以使用“readline”会好得多,但是用“按键”拦截CTRL + D(EOF),但我不知道该怎么去做。

在没有全局安装的情况下可以在Node模块中包含一个命令行?

我有一个小的Node模块,在bin目录中包含一个命令行脚本。 "bin": { "generate": "./bin/generate.js" } generate.js脚本可以正确执行。 这一切工作正常,如果我运行npm install -g 。 但我不想全局安装,只有命令generate模块文件夹内的工作。 如果我从模块文件夹运行npm install ,它会正确安装node_modules子目录中的所有依赖node_modules 。 但是,然后从命令generate像给我“没有这样的文件或目录”。 谢谢。

同步subprocess调用Node.js 0.10.x中的shell脚本(包括CLI)

同步subprocess调用现在可用于正在开发(即不稳定)的Node.js版本。 这对编写shell脚本来说是个好消息,因为它会允许这样的代码: var history = child_process.execSync('git log', { encoding: 'utf8' }); process.stdout.write(history); 但是,针对当前稳定版本的Node.js(v0.10.30)的代码,除了通过外部库之外,同步subprocess调用不可用 。 两个最stream行的这样的库似乎是shelljs和exec-sync 。 对于准备与v0.10.x一起使用的shell脚本,必须调用二进制文件或其他可执行文件并处理它们的输出,这两个库或其他类似库的相对优缺点是什么? 如果适用,请提供代码示例以供说明。

通过exec将variables传递给PhantomJS

我开始使用Grunt,并希望将一个variables传递给我通过exec运行的PhantomJS脚本。 我希望能够做的是通过一个URL的脚本从屏幕捕获。 任何帮助将不胜感激,谢谢! 达伦 咕script脚本 exec('phantomjs screenshot.js', function (error, stdout, stderr) { // Handle output } ); screenshot.js var page = require('webpage').create(); page.open('http://google.com', function () { page.render('google.png'); phantom.exit(); });

用任意的gulpfile名称运行gulp(不是gulpfile.js)

在我的gulp文件中有一个特定的任务是与其他任务隔离的,并且不需要作为构build过程的其余部分运行。 我想把它放在一个单独的gulp文件中,并自行执行。 如何使用具有自定义名称的gulp文件使用gulp? 作为Gulp的文档的入门文档指引我一个没有提到CLI的API文档。 我的search试图争取gulp参数,主要是如何获得命令行参数进入gulp任务的结果。 实际的用例是在Docker容器中提取可翻译的string,我不想用不必要的node.js包来膨胀。