leisure-lib
Version:
@leisure-lib/**所有子包的聚合包
123 lines (115 loc) • 3.75 kB
text/typescript
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);