VSCode 插件 RWR Mod Tool 开发历程(1)

立项缘由 Running with rifles(以下简称 RWR) 的 mod 开发目前存在诸多问题: 人形绑骨麻烦 多人开发时 XML 格式不统一 缺少文件引用检查 各 xml 文件定义属性作用未知 注册方式容易遗漏 … VSCode 作为大多数 Mod 开发者使用的工具, 起草 VSCode 插件目的是逐步解决如上问题. 已知的 VSCode 插件可解决内容: 多人开发时 XML 格式不统一: 通过统一格式化处理 各 xml 文件定义属性作用未知: 通过定义模板命令 / 代码片段处理 缺少文件引用检查: 通过扫描文件引用 key 来查找工作空间所有文件名引用, 未找到抛出警告 本系列文章逐步尽可能解决所有已知问题 本文主要描述第一版本的开发内容 项目启动 新注册 VSCode 插件项目, 按照 VSCode extension 官方教程即可: https://code.visualstudio.com/api/get-started/your-first-extension 该教程会引导注册一个 “命令”, 命令在 VSCode 中用以 Ctrl(or command)-Shift-P 启动的命令 目标 作为第一版的插件, 目标仅定以下内容: 注册命令 创建武器模板 创建护甲模板 插件打包及发布 注册激活条件 我们不需要在任意文件结构的目录都激活插件, 仅需要在 mod 目录即可....

<span title='2024-01-08 00:00:00 +0000 UTC'>2024-01-08</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;586 words&nbsp;·&nbsp;Kreedzt

VSCode 插件 RWR Mod Tool 开发历程(2)  [draft]

概述 本文主要基于第一篇文档进行的插件迭代更新版本, 版本目标为 0.0.2 目标 作为第2版的插件, 当前目标为内容: XML 文件引用扫描, 不存在则抛出警告 分析 RWR 的文件引用是通过 XML 标签特殊属性值来寻找的文件引用, 如 weapon 寻找 file, hud_icon 寻找 hud_icon 等. 可通过读取文件 API + 诊断 API 来实现 通过 language 上的 createDiagnosticCollection 创建诊断实例, 标记目标代码位置即可: API 文档 注册事件 通过注册文件保存 / 文件创建 / 文件删除 / 工作区变更 / 文件重命名回调函数来确保文件扫描触发时机正确性: API 参考 context.subscriptions.push( vscode.workspace.onDidSaveTextDocument((e) => { console.log('onDidSaveTextDocument: startXmlCheck'); startXmlCheck(); }), vscode.workspace.onDidCreateFiles((e) => { console.log('onDidCreateFiles: startXmlCheck'); startXmlCheck(); }), vscode.workspace.onDidDeleteFiles((e) => { console.log('onDidDeleteFiles: startXmlCheck'); startXmlCheck(); }), vscode....

<span title='2024-01-08 00:00:00 +0000 UTC'>2024-01-08</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;468 words&nbsp;·&nbsp;Kreedzt

vitest 项目集成 codecov

项目配置 vitest 配置 不需要特殊配置, 增加 coverage 配置即可: import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { // 注意: 新版 vitest 默认 watch: true, 需要修改为 false, 否则命令会始终不停止 watch: false, // ... coverage: { include: ['src'], all: true, provider: 'istanbul', reporter: ['text', 'json', 'html'], } }, }); npm 命令 为使其 bash 脚本运行报告, 需要添加 npm script: { "scripts": { "coverage": "vitest --coverage" } } 配置 github actions 参考: https://docs.codecov.com/docs/github-2-getting-a-codecov-account-and-uploading-coverage#github-actions 配置 github actions 为配置 ci 的触发规则, codecov 配置需要额外配置...

<span title='2023-07-09 00:00:00 +0000 UTC'>2023-07-09</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;242 words&nbsp;·&nbsp;Kreedzt

nodejs npm 在 windows 下的问题

nodejs npm 在 windows 下的问题 用户名包含空格时, 执行 npx 报错, 路径不对问题 BUG见: create-reat-app issue 复现步骤: C:\Users\Vaidehi Shah\Desktop\MERN-ShoppingList\client> npx create-react-app . 输出: Error: EPERM: operation not permitted, mkdir 'C:\Users\Vaidehi' 很明显, 以上用户名被截取了 解决方案: 首先打开 CMD(命令指示符), 进入到用户名上一级目录下, 执行 dir /x 命令 # 通常是如下目录 C:\Users>dir /x 驱动器 C 中的卷没有标签。 卷的序列号是 F818-9B1A C:\Users 的目录 2020/11/10 19:24 <DIR> . 2020/11/10 19:24 <DIR> .. 2021/07/24 20:08 <DIR> KENZHA~1 Ken Zhao 2021/07/08 22:37 <DIR> Public 0 个文件 0 字节 4 个目录 722,590,040,064 可用字节 以上是我的用户名: Ken Zhao 左侧就是简写名称: KENZHA~1....

<span title='2023-02-02 00:00:00 +0000 UTC'>2023-02-02</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;98 words&nbsp;·&nbsp;Kreedzt

React hooks 入门

React hooks 入门 此教程翻译自Academind课程, 源地址:https://www.youtube.com/watch?v=-MlNBTSg_Ww 为何需要React Hooks 为了状态和生命周期而去写Class组件往往是繁琐的, 而且组合优于继承的原则, 使得在多数情况下能定义函数组件就不去定义类组件 在新版React(16.8)中, 新增了React Hooks, 使我们可以在函数组件中使用状态和生命周期函数, 使得函数组件更加灵活, 减轻类组件使用负担 从state开始(useState) 项目目录: src/ |-components/ |---TabList.js |---Schedule.js |-hooks/ |---http.js 首先我们声明一个无状态函数组件, 内容如下: const TabList = () => { const currentTab = 1; return <div> CurrentTab: {currentTab} </div>; }; 这是一个普通的无状态组件, 我们使用新的useState API来赋予初始值: (useState的调用参数和state一样, 可赋予任何值)(useState的参数为state的初始值) useState方法返回1个数组, 数组内包含2个参数, 第一个参数是当前state: import React, { useState } from 'react'; const TabList = () => { const [state] = useState({ selectedTab: 1 }); return <div> CurrentTab: {state....

<span title='2023-02-02 00:00:00 +0000 UTC'>2023-02-02</span>&nbsp;·&nbsp;7 min&nbsp;·&nbsp;1476 words&nbsp;·&nbsp;Kreedzt