# LKS **Repository Path**: nextall/lks ## Basic Information - **Project Name**: LKS - **Description**: 命令参数解析基本工具 - **Primary Language**: JavaScript - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-21 - **Last Updated**: 2025-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs, JavaScript ## README # 命令行参数任务执行项目 ## 简介 ### 本项目简介 - 本项目是 2025 年 7 月创建,实现自动化注册命令。通过解析命令行参数,执行对应的任务 - 本项目不依赖任何第三方库,基于 NodeJS 开发,采用 CommonJS 规范 ## 项目结构 - `/src` 源码目录 - `/src/class` 所有公共类的存放目录 - `/src/command` 所有功能模块(命令)的存放目录 - `/src/simple_command_parsing_libs` 核心代码库目录 - `/src/scpl.command.js` 自动注册参数命令模块 - `/src/scpl.config.js` 自动注册项目配置模块 - `index.js` 主执行文件(入口) - `scpl`、`scp` 项目的启动脚本 ## 功能模块定义 ### 创建 - `/src/command/<功能模块名称>` 实现功能的模块目录(目录的名称就是功能的名称) ### 结构 - 模块里必须要有一个 `command.js` 文件 - `command.js` 并且返回一个数组,数组项是参数命令映射表配置类 [ParamsMapping.js](src/simple_command_parsing_libs/ParamsMapping.js) ### 示例 - `command.js`: - 更多配置可查看:[Params.js](src/simple_command_parsing_libs/Params.js)(核心类) `extends` [Single](src/simple_command_parsing_libs/Single.js) - 示例 2:[addition](src/command/scpl_addition/command.js) ```js // 导入配置类 const { ParamsMapping } = require("../../simple_command_parsing_libs"); // 显示当前版本(命令的功能:-v -version) const version = new ParamsMapping("v", { key: "version", count: 0, defaults: [], description: "显示当前版本" }); // 注册任务,使用动态导入模块(推荐) version.addTask("version", (...args) => require("./index")(...args)); module.exports = [version]; ``` - `index.js`: ```js const { MainRunningMeta, Params } = require("../../simple_command_parsing_libs"); /** * @description 任务函数 * @param {Array} params 参数集合 * @param {MainRunningMeta} meta meta * @param {Params} __this 当前参数命令对象 * @param {String} taskName 任务名称 */ module.exports = function (param, meta, __this, taskName) { // ...you code }; ``` ## 开发规范 ### 引用 - 功能模块只能引用自己里面的 js(或者同级目录),里面的不能跳出来引用外面的 js。(class, config 除外) - 确保每个命令对应一个功能模块`command/<功能模块名称>`,互不干扰 ### 调试 - 调试代码附上注释:`TODO: debug line comment` 字样 ## 脚本命令 - 可将项目配置环境变量 ### `scpl`、 `scl` #### 说明 - 项目的启动脚本 - 可自行修改此脚本文件的名称 #### 使用 ```bash scpl -h ``` ## command ### 内置的功能模块 1. [scpl_addition](src/command/scpl_addition/command.js): 累加法功能(用于测试的命令) 2. [scpl_help](src/command/scpl_help/command.js): 命令帮助、命令帮助文档(用于查看最终生成的命令名称,如:add => -add) 3. [scpl_version](src/command/scpl_version/command.js): 打印版本号 4. [scpl_generator](src/command/scpl_generator/command.js) 生成项目框架 ### 说明 - 如果不想要哪个命令模块直接删除对应的目录即可 ## 备注 - `[2025年7月20日]` * 包含旧版 lk 命令 * 新增 lks 命令 - `[2025年7月21日]` 完成基础的命令行参数功能 * 识别命令行中的参数命令:(参数命令,布尔命令) * 新增,参数命令对象(Params.js)的 `key` 属性 可为通配符命令 `*`。任意字符串都表示此命令(须放在末尾)。 - `[2025年7月22日]` * 新增打印帮助、版本号 * 新增全局配置类 GlobalConfig.js * 新增布尔命令:-R、-L(递归、日志) * 完成批量为文件创建符号链接功能 - `[2025年7月23日]` * 打印全局配置 * 设置全局配置 recursionDeep、collectFileMaxCount 命令 * 符号链接统计功能(成功、失败) * 显示收集的文件 - `[2025年7月28日]` * 修复布尔命令参数化的二义性问题 * 为每个指令新增帮助文档 * 完成 Steam 创意工坊免费文件下载功能 - `[2025年7月29日]` * 重构日志收集 * 实现参数命令自动注册 - `[2025年7月30日]` * 实现参数命令模自动注册 * 优化入口文件代码逻辑 - `[2025年7月31日]` * 优化网络请求 - `[2025年8月11日]` * 新增子命令配置 - `[2025年8月13日]` * 修复前置命令无法获取第二个默认参数问题 - `[2025年12月19日]` * 移除不必要的功能模块、只保留内置模块 * 将项目核心代码单独存放 * 新增项目配置功能 * 新增单命令等其他配置 * 将启动命令改为:scpl * 新增创建框架项目生成功能 * 信息命令别名 `scl`