buildAll.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import fs from 'fs';
  2. import path from 'path';
  3. import { execSync } from 'child_process';
  4. // 工程目录路径
  5. const projectDir = '/Users/hongkai/Documents/work/bolian/web/projects';
  6. // 获取命令行参数
  7. const args = process.argv.slice(2);
  8. const targetProject = args[0];
  9. // 读取工程目录下的所有子目录
  10. const directories = fs.readdirSync(projectDir).filter(file => {
  11. const filePath = path.join(projectDir, file);
  12. return fs.statSync(filePath).isDirectory();
  13. });
  14. directories.forEach(directory => {
  15. // 如果指定了目标项目且当前目录不是目标项目,则跳过
  16. if (targetProject && directory !== targetProject) {
  17. console.log(`Skipping project ${directory} as it's not the target project...`);
  18. return;
  19. }
  20. if (directory === 'base') {
  21. console.log(`Skipping base project...`);
  22. return;
  23. }
  24. const packageJsonPath = path.join(projectDir, directory, 'package.json');
  25. if (fs.existsSync(packageJsonPath)) {
  26. console.log(`Building project in ${directory}...`);
  27. try {
  28. // 添加调试信息
  29. console.log(`Executing: pnpm run build in ${directory}`);
  30. execSync('pnpm run build', { cwd: path.join(projectDir, directory), stdio: 'inherit' });
  31. } catch (error) {
  32. console.error(`Failed to build project in ${directory}:`, error.message);
  33. }
  34. } else {
  35. console.log(`No package.json found in ${directory}, skipping...`);
  36. }
  37. });