# 进阶

# 查看信息

$ fbi ls [item] [item]

item

  • 空: 查看当前目录可用的任务和模板
  • config/configs : 查看 FBI 全局配置
  • store/stores : 查看模板仓库信息
  • util/utils : 查看可用工具类

例子

$ fbi ls
$ fbi ls config
$ fbi ls store
$ fbi ls util
$ fbi ls config store util

# configs 全局配置说明

  • 查看:$ fbi ls config
  • 设置:$ fbi set
  • 使用:ctx.configs
说明 默认值
_DATA_ROOT (只读) 本地仓库目录 /Users/{yourname}/.fbi
_STORE_FILE (只读) 仓库信息文件路径 /Users/{yourname}/.fbi/store.json
_CUSTOM_CONFIG_FILE (只读) 自定义配置文件路径 /Users/{yourname}/.fbi/configs.custom.json
LOG_LEVEL 日志级别 info
LOG_PREFIX 日志前缀 FBI..>
NPM npm 别名 npm
NPM_OPTIONS npm 参数
TASK_PREFIX 任务模板前缀 fbi-task-
TEMPLATE_PREFIX 项目模板前缀 fbi-project-
TEMPLATE_TASK 模板内任务文件目录名 fbi
TEMPLATE_CONFIG 模板配置文件路径 fbi/options.js
TEMPLATE_INIT_IGNORE 初始化项目时的忽略项 node_modules,.DS_Store,.svn,.git,
dst,dist,package.json,fbi,yarn.lock,
package-lock.json
TEMPLATE_ADD_IGNORE 添加模板时的忽略项 .DS_Store,.svn,.git,dst,dist
VERSION_SEPARATOR 版本分隔符 @

# stores 仓库信息说明

  • 查看: $ fbi ls store
  • 使用:ctx.stores
说明 示例
type 模板类型 project/task
path 模板路径 /Users/{yourname}/.fbi/fbi-project-simple
version 模板版本信息 false: 不支持版本控制
{"latest":"v3.1.0","current":"v3.1.0","all":["v3.0.0","v3.1.0"]}
repository 模板来源路径 https://github.com/fbi-templates/fbi-project-mod.git
description 模板描述 Node service, npm module template.
tasks 模板内含任务 build,serve

# utils 内置工具类说明

  • 查看: $ fbi ls util
  • 使用:ctx.utils[分类][方法] / ctx.utils[方法]
分类 方法 说明
fs stat,mkdirp,exist,existSync,read,
write,copy,remove,list,isEmptyDir,homeDir
文件操作类
style bold,italic,underline,inverse,white,
grey,black,blue,cyan,green,magenta,red,
yellow,normal
文本样式类
type isJson,isObject,isArray,isTaskFile,
isPath,isGitUrl
类型判断类
git is,clone,pull,tags,currentTag,
currentBranch,checkout,getBranchs
git 操作类
path isAbsolute,isRelative,normalize,cwd,join,dir path 操作类
Logger debug,info,success,warn,error,log 日志类, 使用方法 :const log = new ctx.utils.Logger(); log.info(‘’)
其他 argvParse 终端参数解析
其他 assign json 深合并
其他 dateFormat 日期时间格式化
其他 exec spawn 的 promise 版
其他 flow 终端交互方法
其他 promisify promise 化
其他 sequence 顺序执行多个 promise

特殊工具类 logger 使用:ctx.logger[方法]

# 运行任务

$ fbi <task> [params] [mode]

task

  • 描述:任务名称或别名
  • 类型:必需
  • 例子:
$ fbi <task> [params] [mode]

task

  • 描述:任务名称或别名
  • 类型:必需
  • 例子:
$ fbi s
# 或
$ fbi serve

params

  • 描述:任务参数 (由模板任务开发者提供。接收参数并在任务文件里处理。)
  • 类型:可选
  • 例子:
$ fbi s -port=4000  # 在4000端口启动服务
$ fbi b -test       # 为测试环境构建项目

mode

  • 描述:模式
  • 类型:可选
  • 取值:
    • -T: 在模板环境
    • -G: 在全局环境
  • 例子:
$ fbi s -T # 运行模板任务`s`
$ fbi s -G # 运行全局任务`s`
$ fbi s -port=4000 -G # 运行全局任务`s`,在 4000 端口启动服务

# 模板管理

# 添加

$ fbi add <template>

template

  • 描述:模板路径
  • 类型:必需
  • 取值:
    • 远程 git 仓库地址,如:https://github.com/fbi-templates/fbi-project-vue.git
    • 本地模板路径,如:path/to/local/template
    • . : 当前目录
  • 例子:
$ fbi add https://github.com/fbi-templates/fbi-project-vue.git
$ fbi add ./my-tmpl-a
$ fbi add .

# 更新

$ fbi up <template>
$ fbi update <template>

template

  • 描述:模板名称
  • 类型:必需
  • 例子:
$ fbi up vue
$ fbi update vue

# 删除

$ fbi rm <template>
$ fbi remove <template>

template

  • 描述:模板名称
  • 类型:必需
  • 例子:
$ fbi rm vue
$ fbi remove vue

# 项目管理

# 初始化

$ fbi init <template>[@<version>] [project] [option]

template

  • 描述:模板名称或路径
  • 类型:必需
  • 取值:
    • 远程 git 仓库地址,如:https://github.com/fbi-templates/fbi-project-vue.git
    • 本地模板名称,如:vue
  • 例子:
$ cd path/to/project
$ fbi init https://github.com/fbi-templates/fbi-project-vue.git
$ fbi init vue

version

  • 描述:模板版本号
  • 类型:可选
  • 例子:
$ cd path/to/project
$ fbi init vue@1.0.1

project

  • 描述:项目路径
  • 类型:可选
  • 例子:
$ fbi init vue@1.0.1 path/to/project

option

  • 描述:模板选项
  • 类型:可选
  • 取值:
    • 空: 只有项目源码,和指定模板名称
    • -o/-option: 带上项目配置
    • -t/-task: 带上项目配置和任务
    • -a/-all: 所有文件(除.git 目录外),基于已有模版生成新的模版
  • 例子:
$ fbi init vue my-project
$ fbi init vue my-project -o
$ fbi init vue my-project -t
$ fbi init vue my-project -a

在已有项目上执行 fbi init [option], 只更新指定的 option, 不更新 src。

# 切换模板版本

$ fbi use <version>

version

  • 描述:模板版本号
  • 类型:必需
  • 取值:可通过 fbi ls store 查看特定模板的版本号,详情参考
  • 例子:
$ cd path/to/project
$ fbi init https://github.com/fbi-templates/fbi-project-vue.git
$ fbi init vue

# 模板开发

# 创建目录结构

按需求创建目录结构,推荐结构:

|-- fbi-project-name
|--|-- src
|--|--|-- ...
|--|-- fbi
|--|--|-- options.js
|--|--|-- build.js
|--|-- package.json

# 任务开发

1.fbi 目录内新建任务文件
2.正常编写任务文件
3.配置任务别名和说明
在 package.json 内添加 fbi 字段,示例:

"fbi": {
    "template": {
      "name": "fbi-project-mod"
    },
    "tasks": {
      "build": {
        "alias": "b",
        "desc": "Build the project."
      },
      "serve": {
        "alias": "s",
        "desc": "Compile the code and start the development server."
      }
    }
  }

# 测试

$ fbi add .

$ cd path/to/test/workspace
$ fbi init 项目模板名称 项目名称   # 可通过 fbi ls 查看刚刚添加成功的项目模板

$ cd 项目目录
$ fbi ls # 查看可用任务
$ fbi 任务名称或任务别名

# 提交到 git 仓库

如果想共享给别人,请把 git 仓库地址告诉对方

# 依赖管理

# 自动安装依赖

在检测到所需依赖不存在的情况下,FBI 会自动安装如下依赖:

  • 模板的开发依赖 devDependencies
  • 项目的生产依赖 dependencies

会触发自动安装依赖的情形:

  • $ fbi init <template>
  • $ fbi <task>

# 手动安装依赖

$ cd path/to/project
$ fbi install

# 接入 FBI

待补充

最近更新: 7/30/2020, 3:21:21 PM