UNPKG

leisure-lib

Version:

@leisure-lib/**所有子包的聚合包

123 lines (115 loc) 3.75 kB
#! /usr/bin/env node const chalk = require('chalk'); const { program } = require('commander'); const inquirer = require('inquirer'); const { NodeSSH } = require('node-ssh'); const { exec } = require('child_process'); const ora = require('ora'); const fs = require('fs'); const path = require('path'); const packager = require('../package.json'); const uiPackager = require('../packages/ui/package.json'); const utilsPackager = require('../packages/utils/package.json'); const directivesPackager = require('../packages/directives/package.json'); const spinner = ora(); const getVersionMax = (...args) => args .map(item => { return +item.split('.')[2]; }) .reduce((prev, cur) => { if (prev > cur) return prev; return cur; }, 0); const setSameVersion = (packagePath, version) => { const data = fs.readFileSync(path.resolve(__dirname, packagePath), 'utf8'); const configData = JSON.parse(data); configData.version = `1.0.${version + 1}`; fs.writeFileSync( path.resolve(__dirname, packagePath), JSON.stringify(configData, null, '\t'), 'utf8', ); log(`⭐️ ${packagePath} version set 1.0.${version + 1}`, 'green'); }; const log = (str, color = 'white') => { console.log(chalk[color](str)); }; const ssh = new NodeSSH(); program.option('-v, --version', '查看版本号', () => { log(`当前版本:${packager.version}`, 'green'); }); program .command('publish') .description('发布') .action(async () => { spinner.start(log('开始构建dist', 'yellow')); await exec('pnpm docs:build', err => { if (err) { return log('构建失败', 'red'); } (async () => { spinner.succeed(log('构建完成dist', 'green')); spinner.start(log('正在连接服务器', 'yellow')); ssh .connect({ host: `106.15.250.42`, port: 22, username: 'root', password: '20100501zzL', readyTimeout: 10000, tryKeyboard: true, }) .then(async () => { spinner.succeed(log('ssh连接成功', 'green')); spinner.start(log('正在传输文件', 'yellow')); // ssh // .exec('rm -rf /root/web/html3') // .then(res => { // log('清空文件夹完成', 'gerrn'); // }); ssh .putDirectory( `${process.cwd()}/docs/.vitepress/dist`, '/root/web/html3', { tick: (localPath, remotePath, error) => { if (error) { log(error, 'red'); } else { spinner.succeed( log(`${localPath} => ${remotePath}`, 'green'), ); } }, }, ) .then(() => { log('✨✨✨发布成功', 'green'); spinner.clear(); process.exit(0); }); }) .catch(err => { log(err, 'red'); }); })(); }); }); program .command('sameVersion') .description('统一npm包版本号') .action(async () => { const uiV = uiPackager.version; const utilsV = utilsPackager.version; const directivesV = directivesPackager.version; const v = packager.version; const packagePathList = [ '../package.json', '../packages/ui/package.json', '../packages/directives/package.json', '../packages/utils/package.json', ]; packagePathList.forEach(path => setSameVersion(path, getVersionMax(uiV, utilsV, directivesV, v))); }); program.parse(process.argv);