software-cli
v1.0.20
Published
大前端工程化一站式集成解决方案,主要围绕架构、性能、安全、体验、效率、质量六个方面提供支持,基于node生态实现工具自动化、规范化、标准化。
Downloads
93
Readme
Software-CLI
简介
Software-CLI 是前端工程化体系解决方案,旨在提高软件研发开发、测试、部署、运维四个阶段自动化程度,基于 NodeJS 命令行工具,提供一些列功能支持。内置命令和 API 支持自定义扩展 CLI 功能。
当前支持内容查阅版本说明,下个版本发布内容请留意预发布功能。
功能
Software-CLI 功能规划:
- 技术支持多端化
- WEB: React/Vue
- Mobile: 微信小程序/Flutter
- PC: Electron
- Server: NodeJS/Python
- Plugins: ChromeExtension/BabelPlugin/ESLintPlugin/VSCodeExtension
- 开发流程标准化
- 集成 GIT 提交
- 提供开发流程文档
- 开发规范强制化
- 提供 ESLint 插件
- 提供 GitHook
- 项目架构模板化
- 项目框架模板化: 提供命令快速创建项目
- 项目页面模板化: 提供命令快速创建页面
- 项目配置自动化: 项目中重复且固定的操作进行自动化适配填充
- 功能测试自动化 基于 Nightwatch 框架提供更便利的 API 及功能
- 单元测试自动化 基于 Jest 框架提供更便利的 API 及功能
- 代码混淆自动化 基于 AST 技术,提供便利的 API
- 异常监控自动化 基于浏览器端 JS 事件监听器,提供页面、服务异常监控及业务数据埋点 API
- 性能分析自动化 基于浏览器插件技术,提供全面的性能分析服务
- 通用组件支持
- 音视频播放器组件,基于 video.js 兼容多种视频格式
- 大文件传输组件,实现高可配的文件断点、分片、前端自动记忆进度功能
- 浏览器数据库 API,基于 IndexedDB 技术的便利 API
- 通用服务支持
- 音视频高性能服务,基于 FFmpeg 技术实现服务器推流服务
Software-CLI 本身最大程度做到 CLI 与技术栈分离,尽可能将功能实现放到 CLI 依赖包中实现,便于长期维护升级。
Software-CLI 升级分为 CLI 自身升级和 CLI 功能依赖包升级,Software-CLI 每次运行完命令后自动检测升级,优先升级 CLI 自身,若 CLI 本身无更新则再去检测更新 CLI 功能包。
使用指南
安装
Windows: npm i -g software-cli
MacOS/Ubuntu:sudo npm i -g software-cli
运行命令
Usage: sw [command]
例如运行帮助命令,sw --h
命令说明
- --h: 帮助信息,显示全部可用命令
- cmd create: 用于创建新命令,来扩展 Software-CLI 功能
- cmd delete: 用于删除 Software-CLI 中扩展的命令
- add project: 扩展功能,用于创建项目
- obscure: 扩展功能,用于混淆和压缩代码(nodeJS、JavaScript),可混淆压缩一个目录下所有的 JS
- add player: 添加播放器组件和视频转码 API(支持 NPM 安装或源代码复制)
组件文档地址
开发指南
- 下载源代码,https://github.com/GangDevp/software-cli
- 安装依赖包,npm i
- 与操作系统建立软连接,npm link
- 添加新的命令,sw cmd create
- 测试新的命令,开发工具以 debug 模式运行 package.json 中的 scripts,即自己需要测试的命令
- 代码加断点测试,在需要加断点的地方加入“debugger”即可,启动 debug 模式后自动停留在断点处
Software-CLI-Core API
Software-CLI 运行流程的核心及基础 API。
引用方式:,
const { Base, Wait, CLI, ChildProcess } = require('software-cli-core');
ChildProcess.cmd.cmdExecute(cmd, dir, false);
Base
CLI 全局对象
- Base.state: CLI 运行状态下用户自定义的状态属性
- Base.extends: CLI 运行的流程及运行时外部传入的函数
Wait
CLI 等待队列,可设置优先级(延迟队列)
- Wait.enqueue: 进入等待队列,可设置参数在运行前进入延迟队列
- Wait.next: 通知队列中的下一个任务,可设置参数在运行时进入延迟队列
CLI
CLI 命令行相关的 API,通常用于控制台显示,如打印日志、动画加载、命令行交互提问
- CLI.log: 访问日志打印 API
- CLI.loading: 访问控制台动画 API
- CLI.addQuestions: 访问控制台命令交互添加提问 API
Subscribe
通过 channel 订阅消息
Publish
通过 channel 发布消息
Software-CLI-API API
使用频率较高的 API 封装,如常用的 I/O 操作、子进程并行相关等
- API.childProcess : 访问执行子进程任务相关的 API
- API.data: 访问处理数据相关,如数组去重、排序、获取变量数据类型
- API.date: 日期格式化处理
- API.fs: 访问文件访问操作相关 API
- API.git : 访问 Git 常用命令相关 API
- API.packages : 访问检测 NPM 依赖包升级相关 API
- API.request : 访问 http 请求相关 API
- API.event : 访问 node EventEmitter 对象的所有方法
版本说明
1.0.14
[✓]支持命令创建自定义扩展的命令;
[✓]支持命令删除自定义扩展的命令;
[✓]支持命令创建项目(js/react/electron);
[✓]支持命令混淆 JS 多个文件;
1.0.16
[✓]支持命令添加媒体播放器组件;
预发布功能
- [✓] 音视频播放组件和服务: add player 命令支持
- [] 小程序容器支持