UNPKG

@gaonengwww/tiny-toolkit-dev

Version:

tiny-cli 模块开发脚手架

143 lines 11.4 kB
"use strict"; 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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