Ich war auf der Suche, ob jemand ein npm-Paket kennt / in ein npm-Paket eingestiegen ist, um mit Git-Befehlen zu arbeiten. Ich habe ein nodejs-Projekt, in dem ich die folgenden Befehle ausführen möchte:
- git-Klon
- git Zweig erstellen
- git pull request – aus dem erstellten brach
Ich probiere einige npm-Pakete aus, aber ohne Erfolg. jede Hilfe wird geschätzt Danke
Externes Paket verwenden: Sie können verwenden Shelljs npm-Paket
Ohne Verwendung eines externen Pakets: Nutzung von nodejs child_process
Modul. Unten ist die Implementierung
1.exec_process.js
var exec = require('child_process').exec;
var result = function(command, cb){
var child = exec(command, function(err, stdout, stderr){
if(err != null){
return cb(new Error(err), null);
}else if(typeof(stderr) != "string"){
return cb(new Error(stderr), null);
}else{
return cb(null, stdout);
}
});
}
exports.result = result;
2.temp.sh
#! /usr/bin/bash
pwd
git --version
3.app.js
var execProcess = require("./exec_process.js");
execProcess.result("sh temp.sh", function(err, response){
if(!err){
console.log(response);
}else {
console.log(err);
}
});
Um die Anwendung auszuführen, können Sie versuchen node app.js
Ausgabe:
/Wurzel
Git-Version 1.8.1.2
Ebenso können Sie einen beliebigen Befehl in der Shell-Skriptdatei hinzufügen und ihn mit node ausführen. Demo und Quellcode veröffentlicht in lauffähig.
Schlagen Sie eine Überprüfung vor Git-Extras Es deckt alle Anwendungsfälle von Git über die Befehlszeile ab.
Während die Antwort von @samarpanda hilfreich war, a leicht Reinigerlösung (aus der nodejs-Dokumentation) ist wie folgt:
const util = require('node:util');
const exec = util.promisify(require('node:child_process').exec);
async function lsExample() {
const { stdout, stderr } = await exec('ls');
console.log('stdout:', stdout);
console.error('stderr:', stderr);
}
lsExample();
Ich glaube nicht, dass eines der Module PRs unterstützt, aber versuchen Sie es mit dem Klonen / Zweigmanagement gift
:
https://www.npmjs.com/package/gift
Dieses Modul scheint die meisten Git-Funktionen zu haben. Für PRs würde ich vorschlagen, eine Ausgabe zu erstellen und/oder zu diesem großartigen Modul beizutragen:
https://github.com/notatestuser/gift/issues