NodeJS 如何使用节点衍生传递git pathspec参数

juzqafwq  于 2022-12-18  发布在  Node.js
关注(0)|答案(1)|浏览(122)

我正在尝试从Node应用程序中运行以下shell命令:

git grep MySearchString -- 'MyPathToSearchFor'

此命令使用节点的child_process.exec成功运行:

exec("git grep MySearchString -- 'MyPathToSearchFor'") // succeeds!

但是,我无法使用child_process.spawn使该命令工作,因为它要求以字符串数组的形式提供参数。

// Spawn works without the pathspec args:
spawn('git', ['grep', 'MySearchString']) // success! exits with code 0

// It fails when the pathspec args are provided:
spawn('git', ['grep', 'MySearchString', '--', "'MyPathToSearchFor'"]) // exits with code 1
spawn('git', ['grep', 'MySearchString', "-- 'MyPathToSearchFor'"]) // exits with code 128


我如何提供-- MyPathToSearchFor的参数给spawn?我应该如何将dash-dash和pathspec参数转换成spawn参数?
这个问题似乎与args中的引号有关,但我不确定如何处理它们。

6qqygrtg

6qqygrtg1#

这个问题似乎与args中的引号有关,但我不确定如何处理它们。
使用数组参数形式时不要使用引号,例如just

spawn('git', ['grep', 'MySearchString', '--', "MyPathToSearchFor"])

"'MyPathToSearchFor'"会让git查找文件名开头和结尾都包含单引号的文件/目录(理论上可能存在,但很少有)。

相关问题