nodeJS:git拉,提交和推subprocess

我想git拉,提交并从nodeJS与child_process推 – 这是假设工作?

var cmd = require('child_process'); var commmandString = "cd c:\\xampp\\htdocs\\MenuMakerServer\\experiments\\editormenu && git commit -am 'menu.json changes' && git push origin main"; cmd.exec(commmandString , function (error: any, stdout, stderr) { if (error) { callback(error.stack, null); } }); 

编辑:

好吧,我设法让这个工作:

 var sys = require('sys') var exec = require('child_process').exec; function puts(error, stdout, stderr) { sys.puts(stdout) } var options = {cwd:"c:\\xampp\\htdocs\\MenuMakerServer\\projects\\editormenu"}; exec("git status && git pull && git commit -am 'menu changed' && git push", options, puts); 

没有,这不会工作…它看起来像你正在结合DOS shell命令和Unix shell命令。 具体来说c:\是DOS,使用&&链接命令是Unix shell。 你使用哪种环境?

如果您使用的是DOS那么您需要制作一个.bat并调用批处理。 这很好,因为你可以使用参数。

定义一个类似下面代码的node.js模块。

 exports.series = function(cmds, callback){ var execNext = function(){ exports.exec(cmds.shift(), function(error){ if (error) { callback(error); } else { if (cmds.length) execNext(); else callback(null); } }); }; execNext(); }; 

那么你可以运行它:

 myProcessor.series([ 'cd c:\\xampp\\htdocs\\MenuMakerServer\\experiments\\editormenu' 'git commit -am "menu.json changes"', 'git push origin main ' ], function(err){ console.log('executed many commands in a row'); }); 

注意:这里的myProcessor是需要的variables名(有些像var myProcessor = require('./path/to/above/code/file'); )代码片段。