@limejs/cli
Simple CLI for scaffolding lime projects
Last updated a year ago by cuiyongjian .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @limejs/cli 
SYNC missed versions from official npm registry.

npm npm npm NPM

lime-cli

lime-cli是 lime.js Web开发框架配套的项目管理工具,包含 项目初始化、项目模块创建等能力;同时具有灵活的 子命令 开发机制。

特性

  • 初始化适配各种场景的 lime.js 项目, 快速启动开发.
  • 灵活的插件机制,内置配置管理能力;快速开发自定义命令.
  • 快捷创建 lime 框架模块,如 controller、model. [developing]

安装

npm install lime-cli -g
# 或
npm install @limejs/cli -g

使用

lime-cli 默认支持的命令有:

lime init # 可交互的方式初始化 lime 项目脚手架
lime list # 查询并列出支持的 官方和私有项目模板
lime tpl # 增删私有项目模板
lime doc # 查看 lime-cli 帮助文档
lime config # 修改本地 lime-cli 的配置
lime new [controller|model|view] # 新建 controller 相关文件,*尚未支持*
lime plugin # 管理 lime 项目插件 *尚未支持*

初始化项目

目前官方提供的项目样板有:

  • [BASIC 基于 LIME.JS 的项目基础项目模板,包含可选的基础 MVC 模块 [适合简单 demo]
  • [REST] 一个完善的 API 开发骨架,在基础模板之上,增强了 REST API 项目开发的能力,去除了不必要的视图层。[适合 restful api 项目]
  • [SPA] 经典的基于 Vue.js 的前后端分离的单页应用;分离开发,聚合部署 [适合内网管理端或没有SEO要求的外网产品]
  • [SSR] 基于 Vue.js + SSR 实现的完善的项目模板,支持开发环境热替换和生产环境的编译、部署 [适合对性能和SEO有要求的外网产品]

初始化一个项目只需使用 lime init <project-foler>

例如:

lime init my-project

其中 my-project 表示要把项目创建在哪个 目录 下,可以支持输入 . 表示当前所在目录。

执行上述命令,会交互式的选择所使用的 项目模板,然后发起模板所要求的交互提示。在完成交互后,项目会在你指定的 my-project 下生成所有项目样板文件。之后您可以进入项目目录,进行开发工作。

目前 lime-cli 支持官方提供的 4 个项目模板,如果你需要自己定制也非常简单,参考 模板制作 指引来开发自己的私有模板。

cli 本地配置

lime config set a=1 // 设置配置项a的值为1

你可以设置任意自己喜欢的配置,以备自己编写自定义命令插件时使用。当然,lime-cli 自身已经支持了一些可用的配置。

lime-cli 自身支持如下的配置项:

配置名 含义 默认值 示例
self_cmd_dir 放置自定义子命令代码的目录 lime-cmd "utils/mycmd"
templates_dir 远程模板的缓存目录 ~/.lime-cli "~/.lime"

你可以通过 lime config list 查看本地所有配置内容。 同时支持 get <key>, set <key> 的方式获取和设置单个 key。

制作私有模板

通常,你的团队可能会形成自己的项目样板。借助 lime-cli,你可以使用自己的样板来初始化项目。步骤如下:

  1. 编写项目模板(教程),并托管到 github/bucket 等支持 git 协议的代码仓库平台
  2. 通过 lime tpl add <name> <url> 命令将自己的私有模板添加到 lime-cli 的模板列表中
  lime tpl add mytpl myaccount/lime

其中 url 字段可以填写 github 的仓库短名称;如果不是 github 上的仓库,可以使用模板的完整的 URI 地址

自定义子命令

随着项目复杂度增加,可能需要编写一些命令来提高工作效率。lime-cli 支持编写自己的子命令,如实现一个 lime drop 命令。编写方式非常简单。现在假设你要编写一个 drop 子命令用来删除特定的页面文件,我们以此为例来说明步骤:

  • 在当前项目根目录下创建一个目录 lime-cmd
  • 在 lime-cmd 目录下创建一个子目录叫做 drop
  • 在drop目录下新建一个 index.js 文件
  • 按照规范编写子命令代码
  • lime-cli 再次执行时,会自动加载当前工作目录(cwd)下的 lime-cmd 目录中的子命令

编写子命令代码

子命令js代码中只需导出一个 commander 所需的模块即可,对应字段的含义也可以去参考 commander 的官方文档。在这里我们简单介绍一下,足够你编写自己所需的命令功能。

const rimrf = require('rimrf')

module.exports = {
    command: "drop",
    description: "删除项目的dist目录",
    help: () => {
        console.log('  例子:');
        console.log('');
        console.log('    $ lime drop');
        console.log();
    },
    options: [
      ['--f', '递归强制删除']
    ],
    action: () => {
        rimrf(path.join(process.cwd(), 'dist'))
        process.exit(0);
    }
};

其中

  • command 表示子命令名字,格式跟 commander.command() 方法一致;
  • description表示命令的描述,可在 -h 查看帮助时输出在顶部;
  • help 会以 commander.on('help') 的方式挂载,可以给当前子命令追加自己喜欢的帮助信息;
  • options表示配置选项,会以 commander.options() 的方式挂载,与 commander.options方法形参格式一致,第一个参数表示option指令,第二个参数表示参数描述
  • action是commander命中后的回调,在这里可以编写你命令的主要逻辑

TODO

支持更多类似 thinkjs 的模块添加命令

Thanks

lime-cli 有参考 vue-cli, zan-node, think-cli, rato 等项目,在此对这些开源项目表示感谢

License

MIT

Current Tags

  • 1.1.5                                ...           latest (a year ago)

11 Versions

  • 1.1.5                                ...           a year ago
  • 1.1.4                                ...           a year ago
  • 1.1.1                                ...           a year ago
  • 1.1.0                                ...           a year ago
  • 1.0.7                                ...           a year ago
  • 1.0.6                                ...           a year ago
  • 1.0.5                                ...           a year ago
  • 1.0.4                                ...           a year ago
  • 1.0.3                                ...           a year ago
  • 1.0.2                                ...           a year ago
  • 1.0.0                                ...           a year ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 11
Last Month 12
Dependencies (23)
Dev Dependencies (0)
None
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |