1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| import { execaSync } from 'execa' import ora from 'ora' import chalk from 'chalk' import fse from 'fs-extra' import config from '../config.js'
export default function (dirName, platform) { return new Promise((resolve, reject) => { let getGitRemoteResult = { failed: true, } const tmpPath = `${dirName}/temp` const gitUrl = config.find((item) => item.platform === platform).git const gitDir = gitUrl.replace('http://git.cn:3000/master/', '').replace('.git', '') try { fse.mkdirSync(dirName) fse.mkdirSync(tmpPath) } catch (error) { console.log(chalk.red('mkdir failed!')) reject() return } const spinners = [ora('loading...')] spinners[0].start()
try { getGitRemoteResult = execaSync('git', ['clone', '-b', 'master', gitUrl], { cwd: tmpPath, }) } catch (err) { console.error(err) fse.rmdirSync(dirName) console.log(chalk.red('git clone failed!')) reject() return } if (getGitRemoteResult.failed === true) { spinners[0].fail('git clone failed!') reject() return } try { fse.copySync(`${tmpPath}/${gitDir}`, `${dirName}`) execaSync('rm', ['-rf', tmpPath], { cwd: './', }) execaSync('rm', ['-rf', `${dirName}/.git`], { cwd: './', }) execaSync('rm', ['-rf', `${dirName}/package-lock.json`], { cwd: './', }) execaSync('rm', ['-rf', `${dirName}/yarn.lock`], { cwd: './', }) } catch (err) { console.error(err) fse.rmdirSync(dirName) console.log(chalk.red('copy failed!')) reject() return } spinners[0].succeed('git clone success!') resolve() }) }
export default [ { platform: 'vite2.x + vue3.x + pinia + element-plus', git: 'http://git.cn:3000/master/vite-vue.git', }, { platform: 'vite2.x + vue3.x + pinia + vant', git: 'http://git.cn:3000/master/vite-vue-mobile.git', }, { platform: 'vite2.x + react18 + mobx + antd', git: 'http://git.cn:3000/master/vite-react.git', }, { platform: 'vite2.x + react18 + mobx + antd-mobile', git: 'http://git.cn:3000/master/vite-react-mobile.git', }, ]
|