@tianyio/quality-helper
Version:
A comprehensive quality helper tool for project scaffolding and management
88 lines (79 loc) • 2.39 kB
JavaScript
import { program } from 'commander'
import {
createProject,
updateConfig,
updateDependencies,
checkDependencies,
} from '../dist/es/index.js'
import chalk from 'chalk'
import { readFileSync } from 'fs'
import { join, dirname } from 'path'
import { fileURLToPath } from 'url'
// 从package.json获取版本号
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const packageJsonPath = join(__dirname, '..', 'package.json')
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'))
program
.name('quality-helper')
.description('集成Vite功能的现代化前端脚手架工具')
.version(packageJson.version)
// 创建项目命令
program
.command('create [project-name]')
.description('使用新接口创建前端项目 (single|monorepo)')
.option('-m, --monorepo', '创建monorepo架构项目')
.option('-s, --single', '创建单体仓库项目')
.action(async (projectName, options) => {
try {
await createProject(projectName, options)
} catch (error) {
console.error(chalk.red('❌ 项目创建失败:'), error.message)
process.exit(1)
}
})
// 更新配置文件命令
program
.command('update-config')
.description('更新项目配置文件')
.action(async () => {
try {
await updateConfig()
} catch (error) {
console.error(chalk.red('❌ 配置更新失败:'), error.message)
process.exit(1)
}
})
// 更新依赖命令
program
.command('update-deps')
.description('更新项目依赖(支持交互式选择依赖列表文件)')
.option('-i, --interactive', '启用交互式模式,可选择本地依赖列表文件')
.action(async options => {
try {
await updateDependencies()
} catch (error) {
console.error(chalk.red('❌ 依赖更新失败:'), error.message)
process.exit(1)
}
})
// 检查依赖状态命令
program
.command('check-deps')
.description('检查项目依赖状态')
.action(async () => {
try {
await checkDependencies()
} catch (error) {
console.error(chalk.red('❌ 依赖状态检查失败:'), error.message)
process.exit(1)
}
})
// 解析命令行参数
program.parse(process.argv)
// 如果没有提供任何命令,显示帮助信息
if (!process.argv.slice(2).length) {
program.outputHelp()
}