#!/usr/bin/env node import './utils/esm-register' import './utils/beforeStart' import fs from 'fs-extra' import yargs from 'yargs' import autoRefactor from './auto-refactor' import build from './build' import commitDist from './commit-dist' import paths from './config/paths' import deploy from './deploy' import * as generator from './generator' import start from './start' const pkg = fs.readJsonSync(paths.resolveOwn('package.json')) // eslint-disable-next-line @typescript-eslint/no-unused-expressions yargs(process.argv.slice(2)) .usage(`教育工程化 webpack5 基础框架\n文档: ${pkg.homepage}`) .command( 'start', '开发', (yargs) => yargs.option('port', { alias: 'p', desc: '指定端口', string: true }), (args) => start(args) ) .command( 'build', '打包', (yargs) => yargs .option('analyze', { alias: 'a', desc: '分析代码', default: false, boolean: true, }) .option('output-html', { alias: 'o', desc: '输出 html 文件', default: false, boolean: true, }), (args) => build(args) ) .command( 'deploy', '自动部署 dist 到 v1 服务器,可以使用 @qse/ssh-sftp 工具生成.sftprc.json文件,或者直接使用命令行参数指定上传目标', (yargs) => yargs .option('school', { alias: 's', desc: '上传到校端', default: false, boolean: true }) .option('bureau', { alias: 'b', desc: '上传到局端', default: false, boolean: true }) .option('documentshelves', { alias: 'd', desc: '上传到公文', default: false, boolean: true, }) .option('compositionshelves', { alias: 'c', desc: '上传到文曲智阅', default: false, boolean: true, }) .option('compositionshelves-dingtalk', { alias: 'cd', desc: '上传到文曲智阅(钉钉一方化)', default: false, boolean: true, }), (args) => deploy(args) ) .command(['generator', 'g'], '自动生成代码', (yargs) => yargs .command('override', '创建 override 文件', {}, () => generator.override()) .command('tailwind', '创建 tailwind 文件', {}, () => generator.tailwind()) .command('ts', '创建 tsconfig 文件', {}, () => generator.ts()) .showHelpOnFail(true) .demandCommand(1, '') ) .command('auto-refactor', '自动改造项目', {}, () => autoRefactor()) .command( 'commit-dist', '提交 dist 目录到 dist 分支', (yargs) => yargs.option('rm-local', { desc: '提交完后删除本地 dist', type: 'boolean' }), (args) => commitDist(args) ) .showHelpOnFail(true) .demandCommand(1, '') .alias({ v: 'version', h: 'help' }).argv