egret 白鹭的编译太慢了 自己写了一个
用的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();
相关文章:
egret 白鹭的编译太慢了 自己写了一个
用的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:\\projec…...
<数据集>pcb板缺陷检测数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:693张 标注数量(xml文件个数):693 标注数量(txt文件个数):693 标注类别数:6 标注类别名称:[missing_hole, mouse_bite, open_circuit, short, spurious_copper, spur…...
实验四:图像的锐化处理
目录 一、实验目的 二、实验原理 1. 拉普拉斯算子 2. Sobel算子 3. 模板大小对滤波的影响 三、实验内容 四、源程序和结果 (1) 主程序(matlab) (2) 函数GrayscaleFilter (3) 函数MatrixAbs 五、结果分析 1. 拉普拉斯滤波 2. Sobel滤波 3. 不同大小模板的滤波…...
【Linux】权限的管理和Linux上的一些工具
文章目录 权限管理chgrpchownumaskfile指令sudo指令 目录权限粘滞位Linux中的工具1.软件包管理器yum2.rzsz Linux开发工具vim 总结 权限管理 chgrp 功能:修改文件或目录的所属组 格式:chgrp [参数] 用户组名 文件名 常用选项:-R 递归修改文…...
ES6 字符串的新增方法(二十)
1. String.prototype.startsWith(searchString, position) 特性:判断字符串是否以指定的子字符串开始。 用法:检查字符串的开始部分。 const str "Hello World"; console.log(str.startsWith("Hello")); // 输出:true…...
如何将MP3或WAV文件解码成PCM文件
文章目录 概要整体架构流程技术细节 概要 本文介绍使用 FFmpeg,将MP3或WAV文件解码成PCM文件的方法。 整体架构流程 首先,使用的 FFmpeg 库要支持 MP3/WAV 解码功能,即编译的时候要加上(编译 FFmpeg 库可以参考:Win…...
OpenAI 推出 GPT-4o mini,一种更小、更便宜的人工智能模型
OpenAI 最近推出了新型人工智能模型 GPT-4o mini,以其较小体积和低成本受到关注。这款模型在文本和视觉推理任务上性能优越,且比现有小型模型更快、更经济。GPT-4o mini 已向开发者和消费者发布,企业用户将在下周获得访问权限。 喜好儿网 在…...
Nacos 服务发现(订阅)源码分析(服务端)
前言: 前文我们分析了 Nacos 服务发现(订阅)的流程,从 Nacos Client 端的源码分析了服务发现的过程,服务发现最终还是要调用 Nacos Server 端来获取服务信息,缓存到客户端本地,并且会定时向 Na…...
DICOM CT\MR片子免费在线查看工具;python pydicom包加载查看;mayavi 3d查看
DICOM CT\MR片子免费在线查看工具 参考: https://zhuanlan.zhihu.com/p/668804209 dicom格式: DICOM(Digital Imaging and Communications in Medicine)是医学数字成像和通信的标准。它定义了医学图像(如CT、MRI、X…...
VSCode远程连接Ubuntu/Linux
文章目录 前言SSH(Secure Shell)简介主要功能工作原理常见的 SSH 客户端和服务器 Ubuntu安装sshvscode远程插件安装远程插件开始远程连接 打开文件夹新建终端 总结 前言 在现代开发环境中,远程工作和跨平台开发变得越来越普遍。Visual Studi…...
【Nginx80端口被占用】80端口被System占用如何解决【已解决】
【Nginx80端口被占用】80端口被System占用如何解决【已解决】 01 问题背景 Nginx 版本 1.19及以上80端口被System占用,无法kill tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 1/systemd 执行以下代码无效&…...
云计算的发展历程与边缘计算
云计算的发展历程 初期发展(1960s-1990s) 概念萌芽:云计算的概念可以追溯到1960年代,当时约翰麦卡锡(John McCarthy)提出了“计算将来可能成为一种公共设施”的想法。这个概念类似于现代的云计算…...
199.二叉树的右视图(DFS)
给定一个二叉树的根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 解题…...
机器学习基础入门(1)
最近也在努力的想要学习些机器学习的知识,目前正在了解各个概念及术语,下面就把学习到的概念都列出来。 人工智能 (AI) Artificial intelligence 人工智能生成内容(AIGC) 机器学习(ML) Machine Learning …...
mybatis的xml中,where标签不自动删除多余的and之类的问题
遇到了这个莫名其妙的问题,起初是很疑惑的,where标签好像失灵了一般不会自动删除掉 多余的and 看了眼sql语句,发现还是有and没被删除。 后来重新写了遍后发现又没事了。真的是神人。 然后就研究了好一会,发现!&#…...
RK3588 编译opencvopencv_contrib记录
RK3588 编译opencv&opencv_contrib记录 1. 下载文件1.1 opencv源码1.2 安装cmake 2.开始编译2.1 提示缺少boostdesc_bgm.i 等问题2.2 提示缺少某hpp头文件2.3 其它问题 3. 设置环境变量4. 测试5.参考 1. 下载文件 1.1 opencv源码 需要opencv和opencv-contrib的版本号保持…...
Eureka: 微服务架构中的服务发现与注册实践
Eureka介绍与使用教程 你好,我是悦创。 Eureka 是 Netflix 开发的一款服务发现(Service Discovery)工具,它主要用于云中基于微服务架构的应用程序。Eureka使服务实例能够动态地注册自己,而其他服务实例可以通过 Eure…...
8、添加第三方包
目录 1、安装Django Debug Toolbar Django的一个优势就是有丰富的第三方包生态系统。这些由社区开发的包,可以用来快速扩展应用程序的功能集 1、安装Django Debug Toolbar Django Debug Toolbar位于名列前三的第三方包之一 这是一个用于调试Debug Web应用程序的有…...
【算法】算法模板
算法模板 文章目录 算法模板简介数组字符串列表数学树图动态规划 简介 博主在LeetCode网站中学习算法的过程中使用到并总结的算法模板,在算法方面算是刚过初学者阶段,竞赛分数仅2000。 为了节省读者的宝贵时间,部分基础的算法与模板未列出。…...
特征工程方法总结
方法有以下这些 首先看数据有没有重复值、缺失值情况 离散:独热 连续变量:离散化(也成为分箱) 作用:1.消除异常值影响 2.引入非线性因素,提升模型表现能力 3.缺点是会损失一些信息 怎么分:…...
python之with和try
with 和 try 都是 Python 中用于处理“可能会出问题”的场景的关键字,但它们的核心目标和应用方式有所不同。下面这个表格能帮你快速把握它们的核心区别和联系:特性with语句try语句核心目标资源管理,确保资源使用后被正确释放异常处理&#x…...
xbee_lib嵌入式通信库架构与工程实践指南
1. XBee通信库(xbee_lib)深度解析与嵌入式工程实践XBee系列模块作为Digi公司推出的成熟Zigbee/802.15.4/Point-to-Multipoint无线通信解决方案,广泛应用于工业物联网、远程传感器网络、智能农业及楼宇自动化等场景。xbee_lib是一个面向嵌入式…...
WVP-GB28181-Pro:构建统一视频监控平台的技术指南
WVP-GB28181-Pro:构建统一视频监控平台的技术指南 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 在安防监控领域,企业和机构常常面临多品牌设备协议不兼容、系统扩展困难、运维成本高昂等…...
为什么你的Polars清洗比Pandas还慢?3步定位CPU缓存未对齐、SIMD未启用、线程池饥饿这3大隐形杀手
第一章:Polars 2.0 大规模数据清洗技巧 性能调优指南Polars 2.0 引入了全新的执行引擎与内存管理机制,显著提升了大规模数据清洗场景下的吞吐量与低延迟响应能力。相比 Pandas,其在 10GB 数据集上的列式过滤、字符串标准化与缺失值插补操作平…...
SuperSplat:零安装的浏览器端3D高斯点云编辑器,重塑三维数据处理体验
SuperSplat:零安装的浏览器端3D高斯点云编辑器,重塑三维数据处理体验 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat 在当今三维重建和计算机视觉领域,处理大规模3…...
OpenClaw对话增强:Qwen3-32B长上下文记忆功能配置指南
OpenClaw对话增强:Qwen3-32B长上下文记忆功能配置指南 1. 为什么需要长上下文记忆 上周我在调试一个自动化周报生成任务时,遇到了一个典型问题:OpenClaw在连续对话中总是"忘记"前几轮的关键信息。比如当我先要求"提取本周所…...
OpenClaw学习助手:百川2-13B驱动的自动化笔记整理系统
OpenClaw学习助手:百川2-13B驱动的自动化笔记整理系统 1. 为什么需要自动化笔记整理 作为一个经常需要阅读大量技术文档和论文的开发者,我发现自己陷入了一个困境:每次下载新的PDF或PPT文件后,要么没时间仔细阅读,要…...
用MATLAB玩转三维可视化:手把手教你绘制动态曲面图(含peaks函数详解)
MATLAB三维可视化实战:从静态曲面到动态交互的全方位指南 科研工作者常面临海量数据的可视化挑战,而MATLAB提供的三维图形工具链能将这些抽象数字转化为直观的空间形态。本文将带您深入探索三维可视化的核心技巧,从基础绘图到高级交互&#x…...
nli-distilroberta-base惊艳案例:支持自定义label映射的灵活NLI接口设计实践
nli-distilroberta-base惊艳案例:支持自定义label映射的灵活NLI接口设计实践 1. 项目概述 自然语言推理(NLI)是理解文本语义关系的重要技术。nli-distilroberta-base基于轻量高效的DistilRoBERTa模型,提供了强大的句子对关系判断…...
当代码遇见笔迹:HANDWRITTEN.js 如何让数字文字重获手写温度
当代码遇见笔迹:HANDWRITTEN.js 如何让数字文字重获手写温度 【免费下载链接】handwritten.js Convert typed text to realistic handwriting! 项目地址: https://gitcode.com/gh_mirrors/ha/handwritten.js 你是否曾怀念那些用笔尖在纸上沙沙作响的时光&…...
