net-cli
Version:
131 lines (121 loc) • 4.94 kB
JavaScript
;
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;