0.0.9 • Published 10 months ago

@tecace/ace-cli v0.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@tecace/ace-cli

description

ace-cli 脚手架:基于 typescript 开发,核心模块、工具包、命令包分层管理,独立部署,自动更新,npm 包缓存,拥有高扩展性和维护性。

install

npm install -g @tecace/ace-cli@0.0.6-alpha.0

usage

用户目录 userhome 和存储目录

注意:下文中使用 ${userhome} 指代用户目录

注意:下文中使用 ${userhome} 指代用户目录

注意:下文中使用 ${userhome} 指代用户目录

用户目录

userdir: https://www.npmjs.com/package/userdir?activeTab=readme

存储路径是基于 userdir 工具获取到的 home 目录

import { userdir } from 'userdir';
const userhome = userdir(); // Windows: C:\Users\username MACOS: /Users/username

默认缓存路径

命令包,模板包的下载与缓存由核心模块控制,默认会缓存在 ${userhome}/.ace-cli

修改位于用户目录下缓存路径

在 ${userhome} 下新建.cli_env 文件,写入 CLI_HOME_PATH = '.my-cli'

最终缓存路径会被改为 ${userhome}/.my-cli

# userhone/.cli_env
HOME_PATH = '.my-cli'

插件化机制

脚手架自带默认自带了 init 命令,调用方法

ace-cli init <project_name>

可以通过脚手架提供的插件化机制去扩展新的命令,不用改动原有代码

在${userhome}/.cli_env 文件下新增命令

格式 1:COMMANDS_命令名称大写 = 命令,命令描述,线上 online ,包名@版本名

格式 2:COMMANDS_命令名称大写 = 命令,命令描述,本地 local ,本地包的绝对地址

例子如下所示:

COMMANDS_CLEAN = clean,clean cache,online,@tecace/command-clean@0.0.2-beta.3
COMMANDS_GENERATE = generate,description of generate command,local,/Users/ace0220/commands/generate

自定义命令开发

    • 第一步首先如上示例所示,在${userhome}/.cli_env 新增命令,env 中的 key 如果与命令相关,一定要以 COMMANDS_开头。
    • 每个命令的业务逻辑都可以是一个 package,package.json 中必须有 main 属性,指向 index.js 文件
    • 命令业务逻辑开发可以使用 typescript 开发,但是打包后的 index 代码必须为 commonjs 规范
    • 命令的业务逻辑继承于@tecace/model-command 的 Command 类
    • 必须实现两个方法,init 方法和 exec 方法
    • 必须对外暴露一个 export default 方法
import { Command } from '@tecace/model-command';
import { aceLog } from '@tecace/ace-log';
class CleanCommand extends Command {
  // 将参数传入父类
  constructor(argv) {
    super(argv);
  }
  // 必须实现init方法
  init() {
    aceLog.log('verbose', 'cleancommand', 'init');
  }
  // 必须实现exec方法
  async exec() {
    aceLog.log('verbose', 'cleancommand', 'exec');
  }
}

export default function clean() {
  return new CleanCommand(arguments);
}

完成以上步骤之后,执行 ace-cli 就可以看到新指令的存在

ace0220@ace-mbp cli-test % ace-cli
ace-cli info version: 0.0.6
ace-cli info Home path: /Users/ace0220/.ace-cli
Usage: ace-cli <command> [options]

Options:
  -V, --version                 output the version number
  -d, --debug                   debug mode (default: false)
  -lc, --localPath <localPath>  Specifies the local command file path (default: "")
  -h, --help                    display help for command
# 这里显示可以使用的Command和描述,显示出了clean 命令
Commands:
  init [options] [projectName]
  clean                         clean cache
  help [command]                display help for command

开发新命令流程参考

可以参考笔者的 clean 命令的开发

github:https://github.com/ACE0220/tecace/tree/main/ace-cli/commands/clean npm: https://www.npmjs.com/package/@tecace/command-clean

笔者采用 typescript 开发,打包工具使用的是 rollup,打包后的代码是 commonjs 规范

0.0.9

10 months ago

0.0.8

10 months ago

0.0.7

10 months ago

0.0.6

10 months ago

0.0.6-beta.3

10 months ago

0.0.6-alpha.2

10 months ago

0.0.6-alpha.1

10 months ago

0.0.6-alpha.0

10 months ago

0.0.5

11 months ago

0.0.4

11 months ago

0.0.3

11 months ago

0.0.2

11 months ago

0.0.1

11 months ago