# test-cli **Repository Path**: meetqy/test-cli ## Basic Information - **Project Name**: test-cli - **Description**: 脚手架学习总结 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-03-26 - **Last Updated**: 2021-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # test-cli 脚手架学习总结 # 安装 ``` npm i @test-cli/core -g ``` # 本地调试 第一步 ``` sh git clone git@gitee.com:meetqy/test-cli.git npm run setup cd core/cli npm link ``` 第二步 ``` sh # 指定targetPath test-cli init [projectName] --targetPath [test-cli目录]/commands/init --debug ``` or ``` 1. 在用户主目录新建 .env.test-cli 加入 CLI_TARGET_PATH=测试命令目录 2. 执行命令 test-cli init [projectName] --debug ``` # 环境变量 | 变量名 | 描述 | | ------------------------ | ----------------- | | CLI_HOME_PATH | 本地.test-cli路径 | | CLI_TARGET_PATH | 本地代码路径 | | CLI_REQUEST_BASE_URL | 请求路径 | | CLI_TEMPLATE_CONFIG_PATH | 模板配置文件地址 | | CLI_BASE_PROJECT_PATH | 项目源码所在目录 | | CLI_LOG_LEVEL | 当前log日志等级 | > 所有环境命令都可以 `.env.test-cli` 配置文件中使用 # 配置文件 -> .env.test-cli 在用户主目录下新建 `.env.test-cli` 文件 # 模板中的变量 | 变量名 | 描述 | | ----------- | -------- | | name | 名称 | | version | 版本号 | | description | 描述信息 | # 目录结构 ``` tree . ├── commands // 需要动态加载的命令放在此文件夹下 │   └── init // 命令:init [options] [projectName] ├── core │   ├── cli // 脚手架 │   └── exec // 处理动态加载命令 ├── docs // 文档目录 │   └── image ├── models │   ├── command // 命令相关的校验 实例化等 │   └── package // package包管理、下载、安装、更新等 └── utils ├── format-path // 兼容路径 window/mac ├── get-npm-info // npm包的管理 检查更新、获取所有版本、版本对比等 ├── log // 日志 ├── request // 请求 └── utils // 其他工具栏方法 ``` # 项目中的库及作用 | 库名 | 项目中的作用 | | ------------------------------------------------------------ | --------------------------------------------------- | | [child_process](https://www.npmjs.com/package/child_process) | 动态加载命令,使用Node子进程启动 | | [cli-spinner](https://www.npmjs.com/package/cli-spinner) | 脚手架中的loading/加载提示 | | [axios](https://www.npmjs.com/package/axios) | 获取模板的配置文件 | | [npmlog](https://www.npmjs.com/package/npmlog) | 日志/提示文字/调试信息 | | [semver](https://www.npmjs.com/package/semver) | 对package进行版本对比 | | [url-join](https://www.npmjs.com/package/url-join) | 快速拼接url | | [fs-extra](https://www.npmjs.com/package/fs-extra) | 复制文件/文件夹 | | [npminstall](https://www.npmjs.com/package/npminstall) | 下载npm package | | [path-exists](https://www.npmjs.com/package/path-exists) | 判断文件是否存在 | | [pkg-dir](https://www.npmjs.com/package/pkg-dir) | 查找当前目录下的package | | [commander](https://www.npmjs.com/package/commander) | 命令行库,test-cli中命令行中的操作,都基于此package | | [dotenv](https://www.npmjs.com/package/dotenv) | .env配置 | | [import-local](https://www.npmjs.com/package/import-local) | 判断是否是本地 | | [root-check](https://www.npmjs.com/package/root-check) | 判断是否是root用户,是:自动降权 | | [user-home](https://www.npmjs.com/package/user-home) | 获取当前计算机用户主目录 eg:/Users/** | # 流程设计 ## 脚手架 ![](./docs/image/cli.png) ## init 命令 ``` sh init [projectName] [options] ``` ![](./docs/image/command-init.png)