Match-id-801ce3abac65460690931385cff178a185495d70

This commit is contained in:
* 2023-09-19 09:20:49 +08:00
parent 69a5a3ffd3
commit 95fbc86a62
1 changed files with 65 additions and 65 deletions

View File

@ -4,7 +4,7 @@
### 安装Nodejs ### 安装Nodejs
horizon-cli的运行需要依赖Nodejs使用前请确保您的电脑已安装Nodejs并且版本在16以上。您可以通过在控制台执行以下命令来确认您的版本。 inula-cli的运行需要依赖Nodejs使用前请确保您的电脑已安装Nodejs并且版本在16以上。您可以通过在控制台执行以下命令来确认您的版本。
``` ```
>node -v >node -v
@ -26,18 +26,18 @@ nvm最新版本下载: [https://github.com/coreybutler/nvm-windows/releases](htt
执行完成后可以通过node -v确认安装是否成功。 执行完成后可以通过node -v确认安装是否成功。
### 安装horizon-cli ### 安装inula-cli
为了方便使用horizon-cli的功能推荐您全局安装horizon-cli。Nodejs安装会自带npm工具用于管理模块您可以直接运行如下命令 为了方便使用inula-cli的功能推荐您全局安装inula-cli。Nodejs安装会自带npm工具用于管理模块您可以直接运行如下命令
``` ```
>npm install -g @cloudsop/horizon-cli >npm install -g inula-cli
``` ```
安装完成后,使用horizon-cli version命令确认安装是否完成。 安装完成后使用inula-cli version命令确认安装是否完成。
``` ```
>horizon-cli version >inula-cli version
1.1.0 1.1.0
``` ```
@ -45,13 +45,13 @@ nvm最新版本下载: [https://github.com/coreybutler/nvm-windows/releases](htt
## 二、目录结构 ## 二、目录结构
horizon-cli的推荐目录结构如下 inula-cli的推荐目录结构如下
``` ```
├── dist // 构建产物目录 ├── dist // 构建产物目录
├── node_modules // 项目依赖 ├── node_modules // 项目依赖
│ └── @cloudsop │ └── @inula
│ └── horizon-cli │ └── inula-cli
│ ├── lib │ ├── lib
├── mock // mock目录 ├── mock // mock目录
│ └── mock.ts │ └── mock.ts
@ -66,7 +66,7 @@ horizon-cli的推荐目录结构如下
│ ├── entry.(ts|tsx) │ ├── entry.(ts|tsx)
├── .env // 项目环境变量文件 ├── .env // 项目环境变量文件
├── plugin.ts // 插件文件 ├── plugin.ts // 插件文件
├── .horizon.ts|js // horizon-cli配置文件 ├── .inula.ts|js // inula-cli配置文件
├── package.json ├── package.json
├── tsconfig.json ├── tsconfig.json
``` ```
@ -75,11 +75,11 @@ horizon-cli的推荐目录结构如下
## 三、环境变量 ## 三、环境变量
horizon-cli支持开发者使用环境变量来定义一些配置。 inula-cli支持开发者使用环境变量来定义一些配置。
### 环境变量配置方法 ### 环境变量配置方法
horizon-cli默认将项目根路径下的.env文件视为环境变量配置文件。.env文件应遵循properties文件格式。 inula-cli默认将项目根路径下的.env文件视为环境变量配置文件。.env文件应遵循properties文件格式。
如果项目在本地开发时需要做一些自定义配置,支持同时配置.local.env文件相同名称的环境变量会以.local.env中的生效。 如果项目在本地开发时需要做一些自定义配置,支持同时配置.local.env文件相同名称的环境变量会以.local.env中的生效。
@ -87,14 +87,14 @@ horizon-cli默认将项目根路径下的.env文件视为环境变量配置文
## 四、配置文件 ## 四、配置文件
horizon-cli支持用户通过项目根目录下的.horizon.ts或者.horizon.js文件进行自定义配置。当两个文件同时存在时会优先选取.horizon.ts作为项目配置。如果您对配置文件还需要额外定制可以在环境变量中添加RUNNING_MODE字段RUNNING_MODE允许额外再定制一份配置文件例如RUNNING_MODE=cloudhorizon-cli会寻找名称为.horizon.cloud.ts/js的配置文件。 inula-cli支持用户通过项目根目录下的.inula.ts或者.inula.js文件进行自定义配置。当两个文件同时存在时会优先选取.inula.ts作为项目配置。如果您对配置文件还需要额外定制可以在环境变量中添加RUNNING_MODE字段RUNNING_MODE允许额外再定制一份配置文件例如RUNNING_MODE=cloudinula-cli会寻找名称为.inula.cloud.ts/js的配置文件。
### 配置文件定义 ### 配置文件定义
在配置文件中,您需要默认导出一个配置,以下为一个简单的配置文件示例: 在配置文件中,您需要默认导出一个配置,以下为一个简单的配置文件示例:
``` ```
// .horizon.ts // .inula.ts
export default { export default {
enableMock: true, enableMock: true,
@ -114,9 +114,9 @@ export default {
对于TypeScript类型我们也提供了类型定义以供开发时自动补全 对于TypeScript类型我们也提供了类型定义以供开发时自动补全
``` ```
// .horizon.ts // .inula.ts
import { defineConfig } from "@cloudsop/horizon-cli" import { defineConfig } from "inula-cli"
export default defineConfig({ export default defineConfig({
enableMock: true, enableMock: true,
@ -151,64 +151,64 @@ export default defineConfig({
## 五、插件 ## 五、插件
horizon-cli的所有功能都围绕插件展开插件可以很方便地让用户集成各式各样的功能用户可以通过配置自由搭配组合各式各样的插件能力。 inula-cli的所有功能都围绕插件展开插件可以很方便地让用户集成各式各样的功能用户可以通过配置自由搭配组合各式各样的插件能力。
### 插件执行流程 ### 插件执行流程
所有插件的触发都从用户执行命令开始。当用户执行命令后,horizon-cli会加载用户的配置文件.获取到插件列表后,会依次加载内部插件和用户自定义插件,通过horizon-cli提供的api对象horizon-cli注册命令以及hook。最后根据用户的命令选择最终执行的方法。 所有插件的触发都从用户执行命令开始。当用户执行命令后inula-cli会加载用户的配置文件.获取到插件列表后会依次加载内部插件和用户自定义插件通过inula-cli提供的api对象向inula-cli注册命令以及hook。最后根据用户的命令选择最终执行的方法。
### 使用插件 ### 使用插件
#### 使用内置插件 #### 使用内置插件
内置插件在horizon-cli运行时会自动加载用户可以直接调用这些内置命令当前支持的内置插件功能如下 内置插件在inula-cli运行时会自动加载用户可以直接调用这些内置命令当前支持的内置插件功能如下
| 序号 | 插件功能 | 触发命令 | | 序号 | 插件功能 | 触发命令 |
| ---- | :----------------------- | ------------------- | | ---- | :----------------------- | ------------------- |
| 1、 | 本地开发构建 | horizon-cli dev | | 1、 | 本地开发构建 | inula-cli dev |
| 2、 | 生产构建 | horizon-cli build | | 2、 | 生产构建 | inula-cli build |
| 3、 | 接口mock能力 | horizon-cli dev | | 3、 | 接口mock能力 | inula-cli dev |
| 4、 | 远端服务器页面热更新能力 | horizon-cli dev | | 4、 | 远端服务器页面热更新能力 | inula-cli dev |
| 5、 | 远端服务器页面代理能力 | horizon-cli proxy | | 5、 | 远端服务器页面代理能力 | inula-cli proxy |
| 6、 | 显示版本 | horizon-cli version | | 6、 | 显示版本 | inula-cli version |
| 7、 | 显示帮助 | horizon-cli help | | 7、 | 显示帮助 | inula-cli help |
#### 使用其他开发者发布的插件 #### 使用其他开发者发布的插件
horizon-cli支持用户集成已发布在npm仓库的插件用户可以按需安装并运行这些插件。 inula-cli支持用户集成已发布在npm仓库的插件用户可以按需安装并运行这些插件。
安装可以通过npm安装这里以插件@cloudsop/add为例 安装可以通过npm安装这里以插件@inula/add为例
``` ```
npm i --save-dev @cloudsop/add npm i --save-dev @inula/add
``` ```
如果需要运行插件,需要在配置文件中配置对应的插件路径 如果需要运行插件,需要在配置文件中配置对应的插件路径
``` ```
// .horizon.ts // .inula.ts
export default { export default {
... ...
plugins:["@cloudsop/add"] plugins:["@inula/add"]
} }
``` ```
如果需要使用node_modules中的插件可以只填写插件模块名horizon-cli会自动在node_modules里寻找模块并导入该模块。 如果需要使用node_modules中的插件可以只填写插件模块名inula-cli会自动在node_modules里寻找模块并导入该模块。
### 开发自定义插件 ### 开发自定义插件
#### 为horizon-cli添加命令 #### inula-cli添加命令
我们可以通过api的registerCommand为horizon-cli添加自定义命令示例如下 我们可以通过api的registerCommand为inula-cli添加自定义命令示例如下
1、编写命令插件文件这里我们自定义了一个conf命令用于展示当前项目的配置信息。 1、编写命令插件文件这里我们自定义了一个conf命令用于展示当前项目的配置信息。
``` ```
// conf.ts // conf.ts
import { API } from "@cloudsop/horizon-cli"; import { API } from "inula-cli";
export default (api: API) => { export default (api: API) => {
api.registerCommand({ api.registerCommand({
@ -225,17 +225,17 @@ export default (api: API) => {
2、在配置文件中加入对插件的引用 2、在配置文件中加入对插件的引用
``` ```
// .horizon.ts // .inula.ts
export default { export default {
plugins: ["./conf"] plugins: ["./conf"]
} }
``` ```
3、在项目根目录下执行horizon-cli conf即可触发插件运行。 3、在项目根目录下执行inula-cli conf即可触发插件运行。
``` ```
> horizon-cli conf > inula-cli conf
current user config is: { current user config is: {
plugins: [ './conf', './showConf' ], plugins: [ './conf', './showConf' ],
} }
@ -243,14 +243,14 @@ current user config is: {
#### 为插件添加hook #### 为插件添加hook
horizon-cli提供了hook机制可以让开发者在执行命令时实现事件监听和触发能力 inula-cli提供了hook机制可以让开发者在执行命令时实现事件监听和触发能力
1、使用插件注册hook 1、使用插件注册hook
``` ```
// modifyConfig.ts // modifyConfig.ts
import { API } from "@cloudsop/horizon-cli"; import { API } from "inula-cli";
export default (api: API) => { export default (api: API) => {
api.registerHook({ api.registerHook({
@ -270,7 +270,7 @@ export default (api: API) => {
``` ```
// conf.ts // conf.ts
import { API } from "@cloudsop/horizon-cli"; import { API } from "inula-cli";
export default (api: API) => { export default (api: API) => {
api.registerCommand({ api.registerCommand({
@ -288,7 +288,7 @@ export default (api: API) => {
3、在配置文件中加入插件 3、在配置文件中加入插件
``` ```
// .horizon.ts // .inula.ts
export default { export default {
plugins: ["./conf", "./modifyConfig"] plugins: ["./conf", "./modifyConfig"]
@ -298,7 +298,7 @@ export default {
4、触发命令 4、触发命令
``` ```
> horizon-cli conf > inula-cli conf
current user config is: { current user config is: {
plugins: [ './conf', './showConf' ], plugins: [ './conf', './showConf' ],
buildConfig: {path: './webpack.config.js'}, buildConfig: {path: './webpack.config.js'},
@ -325,7 +325,7 @@ current user config is: {
1、registerCommand 1、registerCommand
registerCommand方法允许用户自定义horizon-cli的执行命令 registerCommand方法允许用户自定义inula-cli的执行命令
``` ```
api.registerCommand({ api.registerCommand({
@ -339,12 +339,12 @@ registerCommand方法允许用户自定义horizon-cli的执行命令
- name命令名称。 - name命令名称。
- description命令描述用于help命令作展示。 - description命令描述用于help命令作展示。
- initialState命令初始属性。 - initialState命令初始属性。
- fn命令回调函数参数args为调用horizon-cli命令时传入的参数已默认去除掉命令本身结构同yargs-parser。state为执行时的命令属性。 - fn命令回调函数参数args为调用inula-cli命令时传入的参数已默认去除掉命令本身结构同yargs-parser。state为执行时的命令属性。
使用示例: 使用示例:
``` ```
import { API } from "@cloudsop/horizon-cli"; import { API } from "inula-cli";
export default (api: API) => { export default (api: API) => {
api.registerCommand({ api.registerCommand({
@ -360,7 +360,7 @@ export default (api: API) => {
2、registerHook 2、registerHook
registerHook用于向horizon-cli注册hook事件 registerHook用于向inula-cli注册hook事件
``` ```
api.registerHook({ api.registerHook({
@ -375,7 +375,7 @@ api.registerHook({
使用示例: 使用示例:
``` ```
import { API } from "@cloudsop/horizon-cli"; import { API } from "inula-cli";
export default (api: API) => { export default (api: API) => {
api.registerHook({ api.registerHook({
@ -404,7 +404,7 @@ applyHook(name: string, value?: any})
使用示例: 使用示例:
``` ```
import { API } from "@cloudsop/horizon-cli"; import { API } from "inula-cli";
export default (api: API) => { export default (api: API) => {
api.registerCommand({ api.registerCommand({
@ -425,10 +425,10 @@ export default (api: API) => {
### 生产构建 ### 生产构建
horizon-cli默认集成生产构建能力用户可以通过在.horizon.ts中配置buildConfig字段启用功能。配置示例如下 inula-cli默认集成生产构建能力用户可以通过在.inula.ts中配置buildConfig字段启用功能。配置示例如下
``` ```
// .horizon.ts // .inula.ts
// 使用webpack构建 // 使用webpack构建
export default { export default {
@ -458,7 +458,7 @@ export default {
} }
``` ```
生产构建支持传入多个配置文件路径使用webpack构建还支持配置文件以函数方式导出horizon-cli会将配置中的env和args作为参数传递到函数中执行以获取最后的构建配置。 生产构建支持传入多个配置文件路径使用webpack构建还支持配置文件以函数方式导出inula-cli会将配置中的env和args作为参数传递到函数中执行以获取最后的构建配置。
``` ```
// webpack.config.js // webpack.config.js
@ -474,7 +474,7 @@ module.exports = function (env, argv) {
} }
} }
// .horizon.ts // .inula.ts
export default { export default {
compileMode: 'webpack', compileMode: 'webpack',
@ -495,10 +495,10 @@ export default {
### 本地构建 ### 本地构建
horizon-cli默认也支持项目本地构建用户可以通过在.horizon.ts中配置devBuildConfig字段启用功能。配置示例如下 inula-cli默认也支持项目本地构建用户可以通过在.inula.ts中配置devBuildConfig字段启用功能。配置示例如下
``` ```
// .horizon.ts // .inula.ts
// 使用webpack构建 // 使用webpack构建
export default: { export default: {
@ -532,13 +532,13 @@ Mock功能广泛应用于前端开发中Mock能力可以模拟出后端服务
### 如何使用Mock ### 如何使用Mock
horizon-cli已经将Mock功能作为内置插件能力当您无论使用webpack还是vite构建项目时都可以自动启用。如果您不想使用Mock功能可以自行在配置文件中关闭。 inula-cli已经将Mock功能作为内置插件能力当您无论使用webpack还是vite构建项目时都可以自动启用。如果您不想使用Mock功能可以自行在配置文件中关闭。
horizon-cli已经将Mock功能作为内置插件能力当您无论使用webpack还是vite构建项目时都可以自动启用。如果您不想使用Mock功能可以自行在配置文件中关闭。该目录下所有文件视为mock文件。例如 inula-cli已经将Mock功能作为内置插件能力当您无论使用webpack还是vite构建项目时都可以自动启用。如果您不想使用Mock功能可以自行在配置文件中关闭。该目录下所有文件视为mock文件。例如
### Mock目录 ### Mock目录
horizon-cli自动将项目根路径里/Mock目录下所有文件视为mock文件。例如 inula-cli自动将项目根路径里/Mock目录下所有文件视为mock文件。例如
``` ```
├── mock ├── mock
@ -553,7 +553,7 @@ horizon-cli自动将项目根路径里/Mock目录下所有文件视为mock文件
如果您想修改Mock目录位置可以在配置文件中修改mockPath。如果不配置该参数默认使用"./mock"。 如果您想修改Mock目录位置可以在配置文件中修改mockPath。如果不配置该参数默认使用"./mock"。
``` ```
// .horizon.ts // .inula.ts
export default { export default {
... ...
enableMock: true, enableMock: true,
@ -646,7 +646,7 @@ export default [
远端页面热更新能力是指在不修改远端服务器文件的前提下,当开发者在本地调试、修改项目代码时,可以实时在远端页面生效,并且能够与远端其他接口正常完成交互,其实现原理如下: 远端页面热更新能力是指在不修改远端服务器文件的前提下,当开发者在本地调试、修改项目代码时,可以实时在远端页面生效,并且能够与远端其他接口正常完成交互,其实现原理如下:
![image-20230913192241108](C:\Users\p00522326\AppData\Roaming\Typora\typora-user-images\image-20230913192241108.png)
用户在启动dev调试后devServer会根据matcher中的判断逻辑决定该接口从本地项目获取还是从远端服务器获取同时本地项目会根据用户修改代码实时编译这样可以使得devServer拥有热更新能力。 用户在启动dev调试后devServer会根据matcher中的判断逻辑决定该接口从本地项目获取还是从远端服务器获取同时本地项目会根据用户修改代码实时编译这样可以使得devServer拥有热更新能力。
@ -655,7 +655,7 @@ export default [
在框架配置文件中开发者需要配置远端服务器地址以及编写自定义的matcher函数提供给框架 在框架配置文件中开发者需要配置远端服务器地址以及编写自定义的matcher函数提供给框架
``` ```
// .horizon.ts // .inula.ts
const matcher = (pathname, request) => { const matcher = (pathname, request) => {
// 这里我们假设以"/user"开头的接口由本地项目提供,其余接口从远端获取 // 这里我们假设以"/user"开头的接口由本地项目提供,其余接口从远端获取
@ -677,20 +677,20 @@ export default {
``` ```
配置完成后,直接运行horizon-cli dev即可进行热调试。 配置完成后直接运行inula-cli dev即可进行热调试。
## 八、**远端静态接口代理**能力 ## 八、**远端静态接口代理**能力
远端代理也是开发测试过程中常用能力之一,尤其是在开发大型项目时,需要修改其中的一个或多个接口时,可以使用远端代理将需要修改的客户端接口重定向到本地修改后的文件,快速进行问题分析和修改验证。 远端代理也是开发测试过程中常用能力之一,尤其是在开发大型项目时,需要修改其中的一个或多个接口时,可以使用远端代理将需要修改的客户端接口重定向到本地修改后的文件,快速进行问题分析和修改验证。
![image-20230913194507967](C:\Users\p00522326\AppData\Roaming\Typora\typora-user-images\image-20230913194507967.png)
### 使用方法 ### 使用方法
用户可以在.horizon.ts中配置remoteProxy字段开启远端静态接口代理能力完成配置后使用后执行horizon-cli proxy启动该功能。 用户可以在.inula.ts中配置remoteProxy字段开启远端静态接口代理能力完成配置后使用后执行inula-cli proxy启动该功能。
``` ```
// .horizon.ts // .inula.ts
export default { export default {
remoteProxy: { remoteProxy: {