UNPKG

jmc-deploy-cli

Version:

A cli tool for web deploy.

79 lines (66 loc) 2.55 kB
#!/usr/bin/env node const path = require('path'); const fs = require('fs'); const inquirer = require('inquirer'); const packageJson = require('../package.json'); const deployPath = path.join(process.cwd(), './deploy'); let deployConfigPath = `${deployPath}/deploy.config.js`; // 如何当前目录不存在配置信息,就从根目录获取 if(!fs.existsSync(deployConfigPath)){ // 解析路径,获取盘符信息 const parsedPath = path.parse(process.cwd()); const rootDirectory = parsedPath.root; // 拼接新的路径 deployConfigPath = path.join(rootDirectory, 'deploy', 'deploy.config.js'); } const { checkNodeVersion, checkDeployConfig, underlineLog } = require('../utils/index'); const version = packageJson.version; const requiredNodeVersion = packageJson.engines.node; const versionOptions = ['-V', '--version']; checkNodeVersion(requiredNodeVersion, 'jmc-deploy'); const program = require('commander'); program .version(version) .command('init') .description('初始化部署相关配置') .action(() => { require('../lib/init')(); }); const agrs = process.argv.slice(2); const firstArg = agrs[0]; // 非version选项且有配置文件时,进入部署流程 if (!versionOptions.includes(firstArg) && fs.existsSync(deployConfigPath)) { deploy(); } // 无参数时默认输出help信息 if (!firstArg) { program.outputHelp(); } // 部署流程 function deploy() { // 检测部署配置是否合理 const deployConfigs = checkDeployConfig(deployConfigPath); if (!deployConfigs) { process.exit(1); } // 注册部署命令 deployConfigs.forEach(config => { const { command, projectName, name, host } = config; program .command(`${command}`) .option('-d, --disbuild', '不打包,直接部署') .description(`${underlineLog(projectName)}项目${underlineLog(name)}部署`) .action((options) => { console.log(`${underlineLog(projectName)}项目将部署到${underlineLog(name)}-${underlineLog(host)}。`); const deploy = require('../lib/deploy'); const _config = { ...config } if(_config.basePath){ _config.distPath = path.join(_config.basePath, _config.distPath); _config.script = `cd ${_config.basePath} && ${_config.script}`; } deploy(_config, options.disbuild); }); }); } // 解析参数 program.parse(process.argv);