You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.4 KiB
165 lines
4.4 KiB
/**
|
|
* 精简脚本 - 将完整版精简为简单版
|
|
* 执行 npm run simple 运行此脚本
|
|
*
|
|
* 此操作不可逆,会删除以下内容:
|
|
* - 页面目录:dashboard, form, list/basic-list, list/card-list, list/search, profile, result, exception, account, user/register, user/register-result
|
|
* - Mock 文件:analysis.mock.ts, workplace.mock.ts
|
|
* - 替换路由配置为简单版
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// 需要删除的页面目录
|
|
const pageDirsToDelete = [
|
|
'src/pages/dashboard',
|
|
'src/pages/form',
|
|
'src/pages/list/basic-list',
|
|
'src/pages/list/card-list',
|
|
'src/pages/list/search',
|
|
'src/pages/profile',
|
|
'src/pages/result',
|
|
'src/pages/exception',
|
|
'src/pages/account',
|
|
'src/pages/user/register',
|
|
'src/pages/user/register-result',
|
|
];
|
|
|
|
// 需要删除的 mock 文件
|
|
const mockFilesToDelete = ['mock/analysis.mock.ts', 'mock/workplace.mock.ts'];
|
|
|
|
// 需要从 package.json 移除的依赖
|
|
const depsToRemove = [
|
|
'@ant-design/plots',
|
|
'@antv/l7-react',
|
|
'@antv/l7',
|
|
'numeral',
|
|
];
|
|
|
|
const devDepsToRemove = ['@types/numeral'];
|
|
|
|
// 递归删除目录
|
|
function deleteDir(dirPath) {
|
|
if (fs.existsSync(dirPath)) {
|
|
fs.rmSync(dirPath, { recursive: true, force: true });
|
|
console.log(`✓ 已删除目录: ${dirPath}`);
|
|
} else {
|
|
console.log(`- 目录不存在,跳过: ${dirPath}`);
|
|
}
|
|
}
|
|
|
|
// 删除文件
|
|
function deleteFile(filePath) {
|
|
if (fs.existsSync(filePath)) {
|
|
fs.unlinkSync(filePath);
|
|
console.log(`✓ 已删除文件: ${filePath}`);
|
|
} else {
|
|
console.log(`- 文件不存在,跳过: ${filePath}`);
|
|
}
|
|
}
|
|
|
|
// 替换路由配置
|
|
function replaceRoutes() {
|
|
const simpleRoutesPath = 'config/routes.simple.ts';
|
|
const routesPath = 'config/routes.ts';
|
|
|
|
if (fs.existsSync(simpleRoutesPath)) {
|
|
// 读取简单版路由
|
|
const simpleRoutes = fs.readFileSync(simpleRoutesPath, 'utf-8');
|
|
// 写入到 routes.ts
|
|
fs.writeFileSync(routesPath, simpleRoutes);
|
|
console.log(`✓ 已替换路由配置: ${routesPath}`);
|
|
// 删除简单版路由备份文件
|
|
fs.unlinkSync(simpleRoutesPath);
|
|
console.log(`✓ 已删除备份文件: ${simpleRoutesPath}`);
|
|
} else {
|
|
console.log(`- 简单版路由配置不存在,跳过: ${simpleRoutesPath}`);
|
|
}
|
|
}
|
|
|
|
// 更新 package.json
|
|
function updatePackageJson() {
|
|
const pkgPath = 'package.json';
|
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
|
|
let modified = false;
|
|
|
|
// 移除 dependencies
|
|
if (pkg.dependencies) {
|
|
for (const dep of depsToRemove) {
|
|
if (pkg.dependencies[dep]) {
|
|
delete pkg.dependencies[dep];
|
|
console.log(`✓ 已移除依赖: ${dep}`);
|
|
modified = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 移除 devDependencies
|
|
if (pkg.devDependencies) {
|
|
for (const dep of devDepsToRemove) {
|
|
if (pkg.devDependencies[dep]) {
|
|
delete pkg.devDependencies[dep];
|
|
console.log(`✓ 已移除开发依赖: ${dep}`);
|
|
modified = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 移除 simple 脚本
|
|
if (pkg.scripts && pkg.scripts.simple) {
|
|
delete pkg.scripts.simple;
|
|
console.log('✓ 已移除 simple 脚本');
|
|
modified = true;
|
|
}
|
|
|
|
if (modified) {
|
|
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
console.log('✓ 已更新 package.json');
|
|
} else {
|
|
console.log('- package.json 无需更新');
|
|
}
|
|
}
|
|
|
|
// 主函数
|
|
function main() {
|
|
console.log('========================================');
|
|
console.log(' 开始执行精简脚本');
|
|
console.log('========================================\n');
|
|
|
|
console.log('>>> 删除页面目录...');
|
|
for (const dir of pageDirsToDelete) {
|
|
deleteDir(dir);
|
|
}
|
|
|
|
console.log('\n>>> 删除 mock 文件...');
|
|
for (const file of mockFilesToDelete) {
|
|
deleteFile(file);
|
|
}
|
|
|
|
console.log('\n>>> 替换路由配置...');
|
|
replaceRoutes();
|
|
|
|
console.log('\n>>> 更新 package.json...');
|
|
updatePackageJson();
|
|
|
|
// 删除自身
|
|
console.log('\n>>> 清理精简脚本...');
|
|
fs.unlinkSync(__filename);
|
|
console.log('✓ 已删除 scripts/simple.js');
|
|
|
|
// 尝试删除 scripts 目录(如果为空)
|
|
const scriptsDir = path.dirname(__filename);
|
|
if (fs.readdirSync(scriptsDir).length === 0) {
|
|
fs.rmdirSync(scriptsDir);
|
|
console.log('✓ 已删除空的 scripts 目录');
|
|
}
|
|
|
|
console.log('\n========================================');
|
|
console.log(' 精简完成!');
|
|
console.log(' 请运行 npm install 更新依赖');
|
|
console.log('========================================');
|
|
}
|
|
|
|
main();
|
|
|