# 开发指引

## 开发前准备

1.  工具

    > 全局安装下面插件

        ```
        yarn global add prettier
        yarn global add jest
        yarn global add @babel/cli
        ```

2.  ide - vscode

    -   插件 | prettier

## 1. 完善 package.json

1. 更改 `name`、`description`、`keywords`、`bin` 字段

## 2. 完善 README.md

1. 填写 `工具名`、`一句话描述`、`使用方式`、`实现方案(选填)`、`其他说明事项(选填)`
2. 根据发布版本, 添加版本说明. 格式如下:
    > 由于初期版本变化可能比较频繁, 暂不以版本号作为版本区分.

```
更新日期: 2021年06月01日
更新内容:
  1. xxx
  2. xxx
  3. ...
```

3. `使用方式` 格式
    1. 安装: 提供 `yarn` or `npm` 其中一种安装方式.
    2. 使用:
        1. 提供命令行命令
        2. 提供参数输入表 | 无参可略过
    3. 介绍其他注意事项

## 3. 目录说明

```
.
|- README.md ------------------------ 项目说明
|- package.json --------------------- 项目描述
|- tsconfig.json -------------------- ts编译配置
|- babel.config.js ------------------ babel 编译配置 | 主要提供给 jest 使用, 源码本身还是走 tsc 编译.
|- prettier.config.js --------------- prettier 格式化插件配置
|- /.gitignore ---------------------- git 忽略检查目录
|- /.vscode ------------------------- vscode 配置目录
|- /bin ----------------------------- 命令行命令导出
    |- cli -------------------------- 本地命令导出
|- /docs ---------------------------- 文档目录
    |- dev.md ----------------------- 开发说明
|- /src ----------------------------- 源码目录
    |- /__test__ -------------------- 单测目录
        |- *.test.ts ---------------- 单测用例
    |- index.ts --------------------- 入口
    |- ...

```

## 4. 开发

1. 在 [./src/index.ts](../src/index.ts) 中, 实现 `Command` 类, 入口方法默认情况下为 `exec()`.
2. 关于控制台输入和命令行输入

    1. 命令行输入:
    2. 控制台输入:

3. 关于单元测试
    1. 已集成 jest 单测.
    2. 由于 npm 项目采用 `tsc` 直译方式, 没有通过 webpack 进行包装, 所以, 我们的单测目录位于 `./src/__test__/**`.

## 5. 注意事项

1. `dependencies` 与 `devDependencies` 的差异

    - devDependencies：仅本地开发使用依赖
    - dependencies：实际代码运行使用依赖
    - 所以, 非在用户环境中使用的依赖, 一律使用 `yarn add [package] --dev` 方式添加

2. 我们提倡一个库只做一件事, 如果存在多种功能耦合, 尽可能的通过分包的形式, 进行解耦!

3. 考虑到项目体量的轻便性, 在这套框架内仅集成了 jest 单元测试, 包括后续, 如果不需要考虑单元测试, 也可以对单测目录及配置项进行删除.
