itoolbox-cli
Version:
iToolBox CLI 工具,用于创建扩展,打包扩展.
55 lines (51 loc) • 1.89 kB
JavaScript
const path = require('path');
// 交互式命令界面
const inquirer = require('inquirer');
const logger = require('./logger');
const { isHaveFile, readFile, writeFile, getLocalTip } = require('../common/utils');
const { CONFIG_QUESTION } = require('../constants/question');
const TIP_INFO = getLocalTip().config;
module.exports = function (args) {
logger.infoTip(TIP_INFO.info);
const projectPath = path.resolve(process.cwd(), './');
const pkgFilePath = path.join(projectPath, './package.json');
const isProject = isHaveFile(pkgFilePath);
if (!isProject) {
logger.errorTip(TIP_INFO.noPkg);
return false;
}
inquirer.prompt(CONFIG_QUESTION).then(function (answers) {
if (!answers.name) {
logger.errorTip(TIP_INFO.nameNotEmpty);
return false;
}
if (!answers.rarName) {
logger.errorTip(TIP_INFO.rarNameNotEmpty);
return false;
}
const pkgContent = readFile(pkgFilePath);
const PKG = JSON.parse(`${pkgContent}`);
const extInfo = {
name: answers.name,
description: answers.desc || PKG.description || '',
version: answers.version || PKG.version || '',
author: answers.author || PKG.author || '',
rarName: answers.rarName,
index: answers.index || 'index.html',
logo: answers.logo || './src/assets/logo.png',
width: answers.width || 700,
height: answers.height || 700,
};
const newPkgContent = {
...PKG,
extInfo,
};
writeFile(pkgFilePath, JSON.stringify(newPkgContent, null, '\t'), (flag) => {
if (flag) {
logger.successTip(TIP_INFO.success);
} else {
logger.errorTip(TIP_INFO.fail);
}
});
});
};