如何使用node.js克隆github仓库

时间:2019-08-27 06:48:00

标签: javascript node.js git github clone

我需要一种可靠的方法来克隆github存储库,并使用node.js和任何必要的npm软件包将其粘贴到本地目录中。

此代码正在使用nodegit库,无法克隆github存储库。它会创建一个名为.git的文件夹,并且不会从存储库中复制任何文件。我尝试了几个库,其中大多数都具有极其复杂的代码或无法正常工作。这以前曾经工作过,但现在却没有。 (它随心所欲地打开和关闭)。请帮助,我需要一个可靠的代码来从url中复制github存储库并将其粘贴到本地目录中。谢谢。

var nodegit = require('nodegit'),
    path = require('path');

var url = "https://github.com/atomicptr/dauntless-builder", //also tried https://github.com/atomicptr/dauntless-builder.git
    local = "C:/data",
    cloneOpts = {};

nodegit.Clone(url, local, cloneOpts).then(function (repo) {
    console.log("cloning succesful!");
    console.log("Cloned " + path.basename(url) + " to " + repo.workdir());
}).catch(function (err) {
    console.log(err);
});

此代码未显示任何错误,但实际上无法克隆存储库。

3 个答案:

答案 0 :(得分:1)

尝试npm软件包

https://www.npmjs.com/package/git-clone

npm我git-clone

var clone = require('git-clone');

clone(repo,targetPath,[options],cb);

支持的选项

git:git二进制文件的路径;默认值:git(可选)。

浅:设置为true时,克隆深度为1(可选)。

签出:要签出的修订/分支/标签(可选)。

答案 1 :(得分:1)

假设您已经在计算机上安装了git,则只需从节点运行克隆命令即可。

const path = require('path');
const{ execSync } = require('child_process');

execSync('git clone repolink', {
  stdio: [0, 1, 2], // we need this so node will print the command output
  cwd: path.resolve(__dirname, ''), // path to where you want to save the file
})

答案 2 :(得分:0)

您可以为此使用shelljs

const shell = require('shelljs')
const path = 'absolute/path/to/folder'
shell.cd(path)
shell.exec('git clone https://github.com/atomicptr/dauntless-builder')