1 | # dingtalk-cli-pro
|
2 | 🌋 可插拔的企业级工具开发框架,同时支持 Window 和 Mac 平台
|
3 |
|
4 | ## 简介
|
5 | 🏄♂ dingtalk-cli-pro 支持自定义命令行插件开发,对插件从 `生成 -> 开发 -> 调试 -> 发布 -> 安装` 进行生命周期管理, 让开发者 `1s` 钟开发出自己的插件,提高生产效率,成为闪电侠⚡️
|
6 |
|
7 | ## 特性
|
8 |
|
9 | - 📦 **开箱即用**,内置 `generator` 命令
|
10 | - 🎉 **插件体系**,支持自定义命令行插件开发, 覆盖从 生成 -> 开发 -> 调试 -> 发布 -> 安装 的插件开发生命周期
|
11 | - ⛄️ **内置脚手架工具**,工具内置 `plugin` 和 `scaffold` 模板,让开发者轻松开发 `自定义插件` 以及 `项目开发脚手架`
|
12 |
|
13 |
|
14 | ## 系统命令
|
15 |
|
16 | ```
|
17 | Usage: dpro [options] [command]
|
18 |
|
19 | Options:
|
20 | -h, --help output usage information
|
21 |
|
22 | Commands:
|
23 | generator|g Create Your Plugin OR Generator
|
24 | ```
|
25 |
|
26 | ## 快速上手
|
27 | `dpro` 命令为 `dingtalk-cli-pro` 命令的简写,开发者可以直接使用简化命令行 `dpro` 运行命令行工具
|
28 |
|
29 | ### 安装工具
|
30 | Window PC 推荐使用 `yarn` 安装
|
31 |
|
32 | ```
|
33 | $ yarn global add dingtalk-cli-pro # 或者 npm install -g dingtalk-cli-pro
|
34 | ```
|
35 |
|
36 | ```
|
37 | # 查看工具
|
38 | $ dpro --help
|
39 |
|
40 | # 项目开发
|
41 | $ dpro dev
|
42 |
|
43 | # 项目本地打包
|
44 | $ dpro build
|
45 |
|
46 | # 项目云端构建
|
47 | $ dpro p -d # 预发环境
|
48 | $ dpro p -o # 线上环境
|
49 | ```
|
50 |
|
51 | ### 使用插件
|
52 |
|
53 | ```
|
54 | # 安装插件
|
55 | $ yarn global add dingtalk-plugin-helloworld # 或者 npm install -g dingtalk-plugin-helloworld
|
56 |
|
57 | # 运行插件
|
58 | $ dpro hellworld
|
59 |
|
60 | ```
|
61 |
|
62 | >
|
63 | [dingtalk-plugin-helloworld 插件源码](https://www.npmjs.com/package/dingtalk-plugin-helloworld)
|
64 |
|
65 | ### 开发插件
|
66 | 插件开发请参考:[插件开发手册](https://www.yuque.com/docs/share/b6de58ac-645d-4273-88a8-6968869c68fa)
|
67 |
|
68 | ## 使用案例
|
69 |
|
70 | ![](https://img.alicdn.com/tfs/TB1AxyXeUKF3KVjSZFEXXXExFXa-654-442.gif)
|
71 |
|
72 |
|
73 | ## 代码案例
|
74 | ```js
|
75 |
|
76 | module.exports = function(dingtalk) {
|
77 | /**
|
78 | * 命令行工具
|
79 | * @see https://www.npmjs.com/package/commander
|
80 | */
|
81 | // 可以使用 dingtalk or this 作用域
|
82 | dingtalk
|
83 | // 注册插件命令 $ dpro helloworld
|
84 | .registryCommand('helloworld')
|
85 | // 插件命令描述
|
86 | .description('welcome to dpro')
|
87 | // 运行命令回调
|
88 | .action(() => {
|
89 | this.log.warn(`Hi ${this.getGitUserInfo().username}, Welcome to dpro`);
|
90 | });
|
91 | }
|
92 | ```
|
93 | ## 系统工具命令
|
94 | ```json
|
95 | {
|
96 | "dingtalk-plugin-react": "*",
|
97 | "dingtalk-plugin-rollup-ts": "*",
|
98 | "dingtalk-plugin-typescript": "*",
|
99 | "dingtalk-plugin-webpack-react": "*",
|
100 | "dingtalk-plugin-eapp-tstojs": "*",
|
101 | "dingtalk-plugin-eapp-ts": "*"
|
102 | }
|
103 | ```
|
104 |
|
105 | ## API 接口
|
106 |
|
107 | ### 文件模块
|
108 | `dintalk.fs|this.fs`上下文对象, [Mem-fs-editor API参考文档](https://www.npmjs.com/package/mem-fs-editor)
|
109 |
|
110 | ### 命令行模块
|
111 | `dingtalk.registryCommand|this.registryCommand`上下文对象, [Commander API 参考文档](https://www.npmjs.com/package/commander)
|
112 |
|
113 | ### 可交互模块
|
114 | `dingtalk.prompt|this.prompt`上下文对象, [Inquirer API 参考文档](https://www.npmjs.com/package/inquirer)
|
115 |
|
116 | ### 日志模块
|
117 | `dingtalk.log|this.log`上下文对象, [Log API 参考文档](lib/log.js)
|
118 |
|
119 | ## 生态系统
|
120 | ### 统一工程化工作流体系
|
121 | ![](https://cdn.nlark.com/yuque/0/2019/png/85311/1570875063375-d6f3fdf6-0108-4419-877f-536f77034818.png)
|
122 |
|
123 | ### 中后台系统解决方案 [云 + 端(Electron)]
|
124 | ![](https://cdn.nlark.com/yuque/0/2019/png/85311/1570875063404-dd4ee478-09a8-40ca-814e-87c39a80cbc6.png)
|
125 |
|
126 | ## License
|
127 |
|
128 | [MIT](https://github.com/umijs/umi/blob/master/LICENSE) |
\ | No newline at end of file |