UNPKG

@fesjs/create-fes-app

Version:
133 lines (132 loc) 4.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _path = _interopRequireDefault(require("path")); var _utils = require("@fesjs/utils"); var _validateNpmPackageName = _interopRequireDefault(require("validate-npm-package-name")); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _inquirer = _interopRequireDefault(require("inquirer")); var _utils2 = require("./utils"); var _App = _interopRequireDefault(require("./generator/App")); var _Plugin = _interopRequireDefault(require("./generator/Plugin")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _default = async ({ cwd, args }) => { if (args.proxy) { process.env.HTTP_PROXY = args.proxy; } const projectName = args._[0]; const inCurrent = projectName === '.'; const name = inCurrent ? _path.default.relative('../', cwd) : projectName; const targetDir = _path.default.resolve(cwd, projectName || '.'); const result = (0, _validateNpmPackageName.default)(name); if (!result.validForNewPackages) { console.error(_utils.chalk.red(`Invalid project name: "${name}"`)); result.errors && result.errors.forEach(err => { console.error(_utils.chalk.red.dim(`Error: ${err}`)); }); result.warnings && result.warnings.forEach(warn => { console.error(_utils.chalk.red.dim(`Warning: ${warn}`)); }); throw new Error('Process exited'); } if (_fsExtra.default.pathExistsSync(targetDir) && !args.merge) { if (args.force) { await _fsExtra.default.remove(targetDir); } else if (inCurrent) { (0, _utils2.clearConsole)(); const { ok } = await _inquirer.default.prompt([{ name: 'ok', type: 'confirm', message: 'Generate project in current directory?' }]); if (!ok) { return null; } } else { (0, _utils2.clearConsole)(); const { action } = await _inquirer.default.prompt([{ name: 'action', type: 'list', message: `Target directory ${_utils.chalk.cyan(targetDir)} already exists. Pick an action:`, choices: [{ name: 'Overwrite', value: 'overwrite' }, { name: 'Merge', value: 'merge' }, { name: 'Cancel', value: false }] }]); if (!action) { return null; } if (action === 'overwrite') { console.log(`\nRemoving ${_utils.chalk.cyan(targetDir)}...`); await _fsExtra.default.remove(targetDir); } } } (0, _utils2.clearConsole)(); const { template } = await _inquirer.default.prompt([{ name: 'template', type: 'list', message: 'Pick an template:', choices: [{ name: 'PC, suitable for management desk front-end applications', value: 'pc' }, { name: 'H5, suitable for mobile applications', value: 'h5' }, { name: 'Plugin, suitable for fes plugin', value: 'plugin' }, { name: 'Cancel', value: false }] }]); if (template === 'pc' || template === 'h5') { const generator = new _App.default({ cwd, args, targetDir, path: _path.default.join(__dirname, `../templates/app/${template}`) }); await generator.run(); console.log(); console.log(_utils.chalk.green(`project ${projectName} created successfully, please execute the following command to use:`)); console.log(`$ cd ${projectName}`); console.log('$ pnpm i'); console.log('$ pnpm dev'); console.log(); } else if (template === 'plugin') { const generator = new _Plugin.default({ cwd, args, targetDir, path: _path.default.join(__dirname, '../templates/plugin'), name }); await generator.run(); console.log(); console.log(_utils.chalk.green(`plugin ${projectName} created successfully, please execute the following command to use:`)); console.log(`$ cd ${projectName}`); console.log('$ pnpm i'); console.log('$ pnpm dev'); console.log(); } }; exports.default = _default;