UNPKG

net-cli

Version:
131 lines (121 loc) 4.94 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var symbols = require('log-symbols'); var download = require('download-git-repo'); var rimraf = require('rimraf'); var path = require('path'); var fs = require('fs-extra'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var symbols__default = /*#__PURE__*/_interopDefaultLegacy(symbols); var download__default = /*#__PURE__*/_interopDefaultLegacy(download); var path__default = /*#__PURE__*/_interopDefaultLegacy(path); var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); const VUE3_TEMPLATE_URL = 'direct:https://git.a.com/pmd-mobile/support/vue3-h5-template#release'; const VUE3_CROSS_TEMPLATE_URL = 'direct:https://git.a.com/pmd-mobile/pmd-h5/vue3-cross-template#release'; const SUB_PROJECT_MAP = { VUE3_H5: 'template-h5', VUE3_ADMIN: 'template-pc', VUE3_CROSS: 'light', }; function getTemplateUrl(vueVersion) { const url = vueVersion === 'vue3-cross' ? VUE3_CROSS_TEMPLATE_URL : VUE3_TEMPLATE_URL; return url; } function getTemplateSubProjectName(vueVersion, type) { if (vueVersion === 'vue3-cross') { return SUB_PROJECT_MAP.VUE3_CROSS; } if (type === 'admin') { return SUB_PROJECT_MAP.VUE3_ADMIN; } return SUB_PROJECT_MAP.VUE3_H5; } const TEMPORARY_DIR = 'temporary-project'; const downloadGitRepo = function (templateGitUrl, downloadPath) { return new Promise((resolve, reject) => { download__default["default"](templateGitUrl, downloadPath, { clone: true }, (err) => { if (err === undefined) { rimraf.rimrafSync(`${downloadPath}/.git`); resolve(1); } else { reject(err); } }); }); }; function initVue3Project({ downloadPath, vueVersion, }) { return new Promise((resolve, reject) => { const url = getTemplateUrl(vueVersion); downloadGitRepo(url, downloadPath) .then(() => { console.log(symbols__default["default"].success, '模板下载完成'); console.log(downloadPath); resolve(1); }) .catch((error) => { console.log(symbols__default["default"].error, '下载模板出现错误!', error); reject(); }); }); } function initProject({ downloadPath, vueVersion, }) { initVue3Project({ downloadPath, vueVersion, }); } function initSubProject({ subProjectName, downloadPath, type, vueVersion, }) { const projectSrcPath = path__default["default"].join(downloadPath, 'src/project/'); if (!fs__default["default"].existsSync(projectSrcPath)) { console.log(symbols__default["default"].error, '当前目录下不存在src/project目录,请检查路径是否正确'); return; } const newSubProjectPath = path__default["default"].join(projectSrcPath, `${subProjectName}`); if (fs__default["default"].existsSync(newSubProjectPath)) { console.log(symbols__default["default"].error, `当前目录下已经存在${newSubProjectPath}目录,请检查路径是否正确`); return; } try { fs__default["default"].removeSync(TEMPORARY_DIR); } catch (error) { console.log(symbols__default["default"].error, error); } const url = getTemplateUrl(vueVersion); downloadGitRepo(url, TEMPORARY_DIR).then(() => { const subProjectName = getTemplateSubProjectName(vueVersion, type); createSubProject({ templateProjectPath: path__default["default"].join(TEMPORARY_DIR, `src/project/${subProjectName}`), newSubProjectPath, subProjectName, downloadPath, }); }); } function createSubProject({ templateProjectPath, newSubProjectPath, subProjectName, downloadPath, }) { try { fs__default["default"].moveSync(templateProjectPath, newSubProjectPath); } catch (error) { console.log(symbols__default["default"].error, error); } console.log(symbols__default["default"].info, '正在修改.env.local'); fs__default["default"].writeFileSync(path__default["default"].resolve(downloadPath, '.env.local'), `VUE_APP_DIR = project/${subProjectName}`, 'utf8'); try { fs__default["default"].removeSync(TEMPORARY_DIR); } catch (error) { console.log(symbols__default["default"].error, error); } } exports.SUB_PROJECT_MAP = SUB_PROJECT_MAP; exports.TEMPORARY_DIR = TEMPORARY_DIR; exports.VUE3_CROSS_TEMPLATE_URL = VUE3_CROSS_TEMPLATE_URL; exports.VUE3_TEMPLATE_URL = VUE3_TEMPLATE_URL; exports.downloadGitRepo = downloadGitRepo; exports.getTemplateSubProjectName = getTemplateSubProjectName; exports.getTemplateUrl = getTemplateUrl; exports.initProject = initProject; exports.initSubProject = initSubProject; exports.initVue3Project = initVue3Project;