@gaonengwww/tiny-toolkit-dev
Version:
tiny-cli 模块开发脚手架
143 lines • 11.4 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Copyright (c) 2022 - present Tiny CLI Authors.
* Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/
const inquirer_1 = __importDefault(require("inquirer"));
const chalk_1 = __importDefault(require("chalk"));
const path = __importStar(require("path"));
const cli_devkit_1 = require("@opentiny/cli-devkit");
const cross_spawn_1 = __importDefault(require("cross-spawn"));
const link_1 = __importDefault(require("./link"));
const utils_1 = __importDefault(require("./utils"));
const log = cli_devkit_1.logs('tiny-toolkit-dev');
const cwd = process.cwd();
exports.default = async () => {
const prefix = cli_devkit_1.cliConfig.getBinName();
// 询问初始化哪种类型的模板
const answers = await inquirer_1.default.prompt([
{
type: 'list',
name: 'type',
message: '请选择你想要初始化的模板',
choices: [
{
name: `${prefix}套件 ---- 用于生成项目模板`,
value: 'toolkit'
},
{
name: `${prefix}插件 ---- 用于拓展${prefix}功能`,
value: 'plugin'
}
]
},
{
type: 'input',
name: 'name',
default: path.basename(cwd),
message: `输入套件/插件名称(${prefix}-toolkit-/${prefix}-plugin- 开头)`,
validate(value, answers) {
if (answers.type === 'plugin' &&
value.indexOf(`${prefix}-plugin-`) !== 0) {
return `${prefix} 插件名称需要 ${prefix}-plugin- 开头`;
}
if (answers.type === 'toolkit' &&
value.indexOf(`${prefix}-toolkit-`) !== 0) {
return `${prefix} 套件名称需要 ${prefix}-toolkit- 开头`;
}
return true;
}
}
]);
const from = utils_1.default.getTemplatePath(answers.type);
const to = utils_1.default.getDistPath();
const names = utils_1.default.generateNames(answers.name);
const fullName = answers.type === 'toolkit'
? cli_devkit_1.modules.utils.toolkitFullName(answers.name)
: cli_devkit_1.modules.utils.pluginFullName(answers.name);
const pluginName = fullName.replace(cli_devkit_1.cliConfig.getScope(), '');
const pluginShortName = answers.type === 'toolkit'
? pluginName.replace(cli_devkit_1.modules.utils.toolkitPrefix(), '')
: pluginName.replace(cli_devkit_1.modules.utils.pluginPrefix(), '');
const data = Object.assign(Object.assign(Object.assign({}, cli_devkit_1.user.get()), names), { prefix,
// 完整的插件名称 , 如 tiny-plugin-npm
pluginName,
pluginShortName, pluginFullname: fullName });
cli_devkit_1.fs.copyTpl(from, to, data, {
// 改一下名称,兼容其他cli工具的情况
rename(filename) {
if (filename === 'tiny.config.js') {
// tslint:disable-next-line: no-parameter-reassignment
filename = `${prefix}.config.js`;
}
return filename;
}
});
if (answers.type === 'plugin') {
log.success('插件创建成功');
}
else if (answers.type === 'toolkit') {
log.success('套件创建成功');
}
// 执行软链操作
link_1.default();
// 判断是否有.git,没有的话 则初始化一下
if (!cli_devkit_1.fs.existsSync(path.join(cwd, '.git'))) {
log.info('Initializing git ... ');
cross_spawn_1.default.sync('git', ['init']);
// 初始化后提交一把
cross_spawn_1.default.sync('git', ['add', '*']);
cross_spawn_1.default.sync('git', ['commit', '-m', `temp: [${prefix} auto] init project`]);
}
// npm 依赖安装
log.info('正在安装 npm 依赖,安装过程需要几十秒,请耐心等待...');
try {
await cli_devkit_1.npm.installDependencies();
// 独立安装devkit ,保证该模块使用的是当前最新版本
await cli_devkit_1.npm.install('@opentiny/cli-devkit', {
save: true
});
}
catch (e) {
log.error('npm 依赖安装失败');
log.error(`请手动执行 ${prefix} i 或 npm i`);
log.debug(e);
}
log.success('npm 依赖安装成功');
// 执行一下build任务
console.log(chalk_1.default.yellow('\n--------------------初始化成功,请按下面提示进行操作--------------------\n'));
console.log(chalk_1.default.green(`${chalk_1.default.yellow(`$ ${prefix} start`)} # 可一键开启项目开发环境`));
console.log(chalk_1.default.green(`${chalk_1.default.yellow(`$ ${prefix} help`)} # 可查看当前套件的详细帮助`));
console.log(chalk_1.default.yellow(`\n--------------------技术支持:官方小助手微信opentiny-official--------------------\n`));
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0RBQTRDO0FBQzVDLGtEQUEwQjtBQUMxQiwyQ0FBNkI7QUFDN0IscURBQStFO0FBQy9FLDhEQUFnQztBQUNoQyxrREFBMEI7QUFDMUIsb0RBQTRCO0FBRTVCLE1BQU0sR0FBRyxHQUFHLGlCQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNyQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxJQUFJLEVBQUU7SUFDeEIsTUFBTSxNQUFNLEdBQUcsc0JBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QyxlQUFlO0lBQ2YsTUFBTSxPQUFPLEdBQVcsTUFBTSxrQkFBUSxDQUFDLE1BQU0sQ0FBQztRQUM1QztZQUNFLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsY0FBYztZQUN2QixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLEdBQUcsTUFBTSxrQkFBa0I7b0JBQ2pDLEtBQUssRUFBRSxTQUFTO2lCQUNqQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsR0FBRyxNQUFNLGVBQWUsTUFBTSxJQUFJO29CQUN4QyxLQUFLLEVBQUUsUUFBUTtpQkFDaEI7YUFDRjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxhQUFhLE1BQU0sYUFBYSxNQUFNLGNBQWM7WUFDN0QsUUFBUSxDQUFDLEtBQWEsRUFBRSxPQUFlO2dCQUNyQyxJQUNFLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUTtv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