import chalk from 'chalk' import fs from 'fs-extra' import semver from 'semver' import paths from '../config/paths' import appConfig from './appConfig' const pkg = fs.readJsonSync(paths.resolveOwn('package.json')) const appPkg = fs.readJsonSync(paths.package) if (semver.valid(appPkg.version) === null) { console.log( chalk.red(`package.version 不符合 semver 规范 https://docs.npmjs.com/about-semantic-versioning`) ) process.exit(1) } switch (appConfig.mode) { case 'main': console.log(chalk.bgMagenta('正在使用教育主工程模式')) break case 'single': console.log(chalk.bgMagenta('正在使用独立项目模式')) break default: console.log(chalk.bgMagenta('正在使用教育集成模式')) break } if (appConfig.grayscale) { console.log(chalk.bgYellow('正在使用灰度测试模式')) } if (!(appConfig.single || appConfig.mainProject)) { if (fs.existsSync(paths.static)) { console.log(chalk.bgYellow('教育集成工程不能含有 public/static, 现已自动删除')) try { fs.rmSync(paths.static, { recursive: true }) } catch {} } } if (!fs.existsSync(paths.public) && !process.argv.includes('auto-refactor')) { console.log(chalk.red(`public 文件夹不存在,请先按文档改造项目`)) console.log(`文档: ${chalk.underline(pkg.homepage)}`) console.log(`\n使用 ${chalk.green('npx edu-scripts auto-refactor')} 自动改造\n`) process.exit(0) } if (appPkg.browserslist) { console.log(chalk.yellow('已删除 package.json 中 browserslist,该值由内部自动控制\n')) delete appPkg.browserslist fs.writeFileSync(paths.package, JSON.stringify(appPkg, null, 2), 'utf-8') } if (appPkg.eslintConfig) { console.log( chalk.yellow('package.json 中 eslintConfig 已废弃,请改用 @qse/eslint-config 进行配置') ) console.log(chalk.yellow('npm i eslint @qse/eslint-config -D')) console.log() console.log(chalk.gray('新建 eslint.config.mjs 文件,内容如下:')) console.log(chalk.yellow('import config from "@qse/eslint-config"')) console.log(chalk.yellow('export default config')) }