egret 白鹭的编译太慢了 自己写了一个
创始人
2024-12-26 01:38:35
0

用的swc
他会检测git的改变

const simpleGit = require('simple-git'); const fs = require('fs'); const path = require('path'); // 初始化 simple-git const swc = require('@swc/core'); const baseDir = 'D:\\project'; const gameDir = 'game\\module\\abcdefg'; const gitDir = 'D:\\project'; const git = simpleGit(gitDir); const crypto = require('crypto');  async function buildChangedTsFiles() {     try {         // 获取工作目录和暂存区的更改文件         const statusSummary = await git.status();         // 合并所有更改的文件名(已修改、已新增、已删除等)         const changedFiles = [             ...statusSummary.modified,             ...statusSummary.created,             ...statusSummary.not_added         ];         const changedTsFiles = changedFiles.filter(file => file.endsWith('.ts'));         if (changedTsFiles.length > 0) {             console.log('更改的 TypeScript 文件:');             changedTsFiles.forEach(file => {                 buildOne(path.join(gitDir, file));             });         }     } catch (error) {         console.error(`Error: ${error.message}`);     } }  function buildPath() {     const inputDir = baseDir + "src\\" + gameDir;     const outputDir = baseDir + "bin-debug\\" + gameDir;     fs.mkdirSync(outputDir, { recursive: true });     const files = fs.readdirSync(inputDir).filter(file => file.endsWith('.ts'));     files.forEach(file => {         buildOne(path.join(inputDir, file));     }); }  var builded = {};  function buildOne(filePath) {     if (builded[filePath] != null) {         return;     }     let fileName = path.basename(filePath);     const code = fs.readFileSync(filePath, 'utf-8');     const hash = crypto.createHash('md5');     hash.update(fileName);     hash.update(code);     let hashValue = hash.digest("hex");     // console.log("检测改变:" + filePath);     if (hashObj[filePath] == hashValue) {         // console.log("没改变");         return;     }     console.log(filePath, hashValue);     hashObj[filePath] = hashValue;     builded[filePath] = 1;     console.log("编译:" + filePath);      let out = filePath.replace(/\.ts$/, '.js').replace("src", "bin-debug");     let output = swc.transformSync(code, {         filename: fileName     });     fs.writeFileSync(out, output.code, 'utf-8'); }  const hashFilePath = path.join(__dirname, 'hashes.json'); var hashObj;  function readHash() {     if (fs.existsSync(hashFilePath)) {         hashObj = JSON.parse(fs.readFileSync(hashFilePath, 'utf-8'));     } else {         hashObj = {};     } }  function saveHashes() {     // console.log("save success");     // console.log(hashObj);     fs.writeFileSync(hashFilePath, JSON.stringify(hashObj, null, 2), 'utf-8'); }  function buildHash() {     for (const key in hashObj) {         buildOne(key);     } }  async function run() {     readHash();     buildHash();     // buildPath();     await buildChangedTsFiles();     saveHashes();     console.log("编译完成"); }  run(); 

相关内容

热门资讯

3分钟辅助挂!哈灵棋牌有软件挂... 3分钟辅助挂!哈灵棋牌有软件挂吗,广东雀神麻将揭秘内幕,详细教程(有挂app)1、不需要AI权限,帮...
2分钟辅助挂!掌心麻将圈会搞鬼... 2分钟辅助挂!掌心麻将圈会搞鬼吗,雀神微信开挂小程序,详细教程(有挂胜率);小薇(透视辅助)致您一封...
四分钟辅助挂!微乐小程序免费黑... 四分钟辅助挂!微乐小程序免费黑科技,七彩全民雀神苹果手机,详细教程(有挂工具)是一款可以让一直输的玩...
四分钟辅助挂!多乐第三方辅助器... 四分钟辅助挂!多乐第三方辅助器,广东雀神麻将怎么让系统发好牌,详细教程(有挂攻略)1、广东雀神麻将怎...
7分钟辅助挂!一起三轮车有没有... 您好,微信雀神广东麻雀小程序辅助这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】...
二分钟辅助挂!胡乐麻将挂神器,... 二分钟辅助挂!胡乐麻将挂神器,雀神2024小程序辅助器,详细教程(有挂工具);一、雀神2024小程序...
玩家必备攻略!陕西麻将助赢神器... 玩家必备攻略!陕西麻将助赢神器(透视)外挂透明挂辅助机制(2023已更新)(哔哩哔哩)1、下载好陕西...
揭秘几款!中至常熟麻将技巧(透... 揭秘几款!中至常熟麻将技巧(透视)外挂透视辅助器(2020已更新)(哔哩哔哩);1)中至常熟麻将技巧...
两分钟普及!四川凉山跑得快辅助... 两分钟普及!四川凉山跑得快辅助器,wEpoke一直是有挂,实用技巧(有挂透视)1、下载好四川凉山跑得...
6分钟辅助挂!心悦海南麻将有挂... 自定义雀神小程序辅助输赢系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不...