# micfc-fast

> 模板创建工具

Latest version **1.2.1** (published 2021-04-26) · ISC license · 0 weekly downloads

## Install

```sh
npm install micfc-fast
pnpm add micfc-fast
yarn add micfc-fast
bun add micfc-fast
```

Provides the commands `mt`, `mcfast`, `micfc-fast`.

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.1 |
| Published | 2021-04-26 |
| First published | 2020-06-07 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 64.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | guoyifan |
| Maintainers | gyf30827 |
| Keywords | mt, micfc-fast, cli, generate |

## Links

- npm: https://www.npmjs.com/package/micfc-fast
- npm.io page: https://npm.io/package/micfc-fast

## Dependencies (5)

- [chalk](https://npm.io/package/chalk.md) ^4.0.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^9.0.0
- [inquirer](https://npm.io/package/inquirer.md) ^7.1.0
- [commander](https://npm.io/package/commander.md) ^5.1.0
- [cross-spawn](https://npm.io/package/cross-spawn.md) ^7.0.3

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 1.2.1 (latest) — 2021-04-26
- 1.2.0 — 2021-03-30
- 1.0.9 — 2021-03-30
- 1.0.8 — 2021-03-29
- 1.0.7 — 2020-07-15
- 1.0.6 — 2020-07-14
- 1.0.5 — 2020-07-13
- 1.0.4 — 2020-06-15
- 1.0.310 — 2020-06-15
- 1.0.39 — 2020-06-15
- 1.0.38 — 2020-06-15
- 1.0.37 — 2020-06-15
- 1.0.36 — 2020-06-15
- 1.0.35 — 2020-06-15
- 1.0.34 — 2020-06-15
- … 10 more at https://npm.io/package/micfc-fast/versions

## README

# 模板生成工具

## 安装

### 安装到全局

```bash
 npm i micfc-fast -g
```

### 使用时安装

```bash
 npx micfc-fast  init "模板"
```

## 指令简写

- mt
- micfc-fast
- mcfast

## 生成模板

### 选择已配置的模板包

```bash
micfc-fast init
```

init 后会弹出配置好的模板包以供选择，按照步骤执行安装即可

### 指定模板包

```javascript
micfc-fast init "xxx"
```

- `xxx` 可以为内置的模板包名或模板配置的别名（只有内置的包才有别名）
- `xxx` 也可以是发布到 npm 的包名
- 例如： `micfc-fast init react` ， 安装`react`项目模板

### 配置项

- `-t` 指定模板包中某个确切的模板
- `-p` 模板的安装路径，
  - 安装非 npm 包下管理的模板，例如：`micfc-fast init "包名" -p git+ssh: xxxx.git#tag`
  - 调试本地项目模板配合 `-l` 使用，例如：`micfc-fast init -p dist/template.config.js --local`
- `-l` 指定模板路径为本地调试路径
- `-r` 指定模板安装的默认根路径，在一些固定场景可以减少每次安装配置路径的重复输入
- `-d` 开启调试模式，调用过程会额外打印一些信息，帮助定位问题

## 更新 CLI 版本

```bash
micfc-fast update
```

### 模式

- `-g` 是否更新全局，还是执行命令出的当前目录

默认值： false

## 模板包编写

- 安装基础模板项目

  ![avatar](./doc/image/template_init.png)

- 模板包实际就是一个 npm 包，只需要引用该包时返回模板配置相关的的配置项即可，通常我们会把该配置放在`template.config.js`中，具体文件位置无要求，只需要在包的 package.json 中配置到 `main`即可

### 模板配置说明

```javascript
module.exports = {
  root: "./template", // 模板文件所在的根目路径，后续模板的路径都是基于此路径的相对路径
  templates: [
    // 可配置多个
    {
      name: "mcfc-template", // 模板的名字
      description: "模块编写文件", // 模板的描述
      path: "./template", // 模板的路径 相对 root 的相对路径
      definePathBehavior: (ctx: Context) => void; // 自定义默认的模板安装路径配置行为（可跳过此步，也可插入其它自定义行为）执行完成后需要设置 ctx的target属性，即最终的安装目录
      whiteBefore: async (ctx) => {
        // 模板文件写入前的回调函数
        // 可以在此处添加一些模板变量注入
        // 做一些写入文件的前置准备工作
      },
      writeEnd: async (ctx) => {
        // 模板文件写入后的回调函数
        // 模板内容的初始化操作，例如项目模板安装完成后可以执行 install 操作，安装项目依赖
      },
    },
  ],
};
```

- 回调函数都为异步函数，函数内可执行异步操作，会阻塞后续流程
- ctx 当前执行上下文, 会提供一些 mt 内置工具 和运行中参数

  - command 当前执行指令相关的一些参数
    - template, args, path, local 等
  - target 用户选择安装模板的路径
  - injectObject 运行中产生的一些数据，通常用来存储注入到模板中的变量

  - fs 文件读写能力 [fs-extra](https://www.npmjs.com/package/fs-extra)

    - copyTemDir
    - copyDir
    - copyFileTpl
    - copyFileTemplateTpl

  - spawn 执行 shell 的能力 [cross-spawn](https://www.npmjs.com/package/cross-spawn)
  - inquirer 命令行交互能力 [inquirer](https://www.npmjs.com/package/inquirer)
  - chalk 控制命令行字体颜色 [chalk](https://www.npmjs.com/package/chalk)

### 注意

- 在复制模板到目标位置时，会忽略模板源文件中的 `node_modules` 和 `__` 文件夹， 可在 `__` 中存储一些回调函数中用到的文件
- 如果安装的包版本不是想要的最新版本，可查看当前模板包版本是否为最新，删除老的版本后再次执行初始化模板命令后会自动安装最新版本
  - 模板包一般会安装在当前执行命令下`node_modules`中，删除`node_modules`即可
  - 如果上述方法不行，在指令后加 --debug 可查看具体的模板包信息(`模板配置文件路径：xxxxxx`)，找到对应文件删除即可

---
_Source: https://npm.io/package/micfc-fast · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
