git-Befehle in nodejs

Lesezeit: 2 Minuten

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

Benutzeravatar von Samar Panda
Samar Panda

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

  • Ich verwende Gits, weil mein Code zu lang für einen Kommentar ist: mein Code. Ich erhalte keinen Fehler, aber beim Einchecken des Repos existiert der Zweig nicht. Bitte beachten Sie, dass das Repo im Beispiel nur für dieses Beispiel gilt.

    – Boba Fett mag JS

    16. April 2015 um 15:16 Uhr


1439320cookie-checkgit-Befehle in nodejs

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy