@tuoyuan/cli
Version:
拓源网络脚手架
65 lines (62 loc) • 2.1 kB
JavaScript
import downloadGitRepo from 'download-git-repo'
import { printText } from './text.js'
import chalk from "chalk";
import ora from 'ora'
// 判断文件夹是否存在
function isDirectoryExist(dirName) {
try {
fs.accessSync(dirName, fs.constants.F_OK);
printText(`文件夹${chalk.blue(dirName)}已存在`,'error')
return true;
} catch (error) {
return false;
}
}
/**
* 下载 模板
* */
export function downloadGitClone(url,name){
const spinner = ora('下载中').start()
downloadGitRepo('direct:'+url, name, { clone: true },function(err){
spinner.stop()
// 原因是项目不存在master分支,其实是拉取成功的,忽略该报错
if (err && err.message !== "'git checkout' failed with status 1") {
printText(`下载失败,请检查网络环境`,'error')
return;
}
else{
printText(`\n`,'success')
spinner.succeed('下载成功')
printText(`\n`,'success')
printText(`\n cd ${name}`,'info')
printText(`\n安装依赖:pnpm install`,'info')
printText(`\n运行项目:pnpm dev`,'info')
}
})
}
/**
* 根据配置拉取模板
* @param config 配置
*/
function downloadTemplate(config) {
spanner.loading(i18n.eauInit.onDownload);
return new Promise((resolve, reject) => {
const { projectName, template, useSSH } = config;
let link = useSSH ? template.ssh : template.https;
download("direct:" + link, projectName, { clone: true }, (err) => {
// 可能会报错 'git checkout' failed with status 1
// 原因是项目不存在master分支,其实是拉取成功的,忽略该报错
if (err && err.message !== "'git checkout' failed with status 1") {
spanner.fatal(i18n.eauInit.download[0]);
spanner.fatal(err);
return;
} else {
spanner.success(i18n.eauInit.download[1]);
spanner.blank(2);
spanner.info(i18n.eauInit.download[2] + chalk.yellow(" cd " + projectName + " ") + i18n.eauInit.download[3], "gray");
spanner.blank();
resolve();
}
});
});
}