Использование NPM ShellJS для выполнения команды Git в Node возвращает пустую строку внутри `stdout` - PullRequest
0 голосов
/ 07 января 2019

Я использую NPM ShellJS для выполнения следующей команды Git внутри скрипта Node:

git for-each-ref --sort=v:refname --format "tag: %(refname:strip=2) message: %(subject) date: %(authordate:iso)" refs/tags

Если я запускаю эту команду в обычном окне командной строки, она отлично работает и приводит к выводу, подобному следующему:

tag: v2.20.0-rc0 message: Git 2.20-rc0 date: 2018-11-18 18:25:38 +0900
tag: v2.20.0-rc1 message: Git 2.20-rc1 date: 2018-11-21 23:25:15 +0900
tag: v2.20.0-rc2 message: Git 2.20-rc2 date: 2018-12-01 21:45:08 +0900

Однако, когда я запускаю эту команду в Node с помощью ShellJS, содержимое stdout представляет собой пустую строку:

const shell = require('shelljs');

let tagInfo = shell.exec(`
  git for-each-ref --sort=v:refname --format "tag: %(refname:strip=2) message: %(subject) date: %(authordate:iso)" refs/tags
`);

console.log('tagInfo', tagInfo.stdout); // empty string

Как получить вывод, как указано, вместо пустой строки?

1 Ответ

0 голосов
/ 07 января 2019

В вашем случае вы используете многострочную строку - это не совсем правильно. Попробуйте указать одну строку (в одну строку):

let tagInfo = shell.exec(`git for-each-ref --sort=v:refname --format "tag: %(refname:strip=2) message: %(subject) date: %(authordate:iso)" refs/tags`);
...