oak-cli done
This commit is contained in:
parent
c5b794dffe
commit
3a0fab660e
|
|
@ -8,47 +8,199 @@
|
|||
|
||||
- 路径:src/index.ts
|
||||
|
||||
- -v
|
||||
### -v
|
||||
|
||||
- 显示版本信息,来自package.json
|
||||
- 显示版本信息,来自package.json
|
||||
|
||||
- make:domain
|
||||
### make:domain
|
||||
|
||||
- 调用异步方法make
|
||||
- 调用script目录下的make-app-domain.js脚本
|
||||
- analyzeEntities
|
||||
- 这里调用这个方法,是为了处理oak-domain下面的entity
|
||||
- 分析entity信息,来自oak-domain/lib/compiler/schemalBuilder
|
||||
- 分析项目依赖analyzeDepedency
|
||||
- 这里通过分析依赖,获取到了全部的`通过这个框架搭建的依赖项目(generinal businiess)`的模块目录,并返回一个包名数组,为了下面再次解析entity
|
||||
- 来自oak-domain/lib/compiler/dependencyBuilder
|
||||
- 再次analyzeEntities,这次是分析`当前开发项目`的entity信息
|
||||
- 调用removeSync方法删除项目目录中建立的oak-app-domain目录
|
||||
- buildSchema
|
||||
- 调用这个方法重建oak-app-domain目录
|
||||
- 这个方法来自oak-domain/lib/compiler/schemalBuilder
|
||||
- 调用异步方法make
|
||||
- 调用script目录下的make-app-domain.js脚本
|
||||
- analyzeEntities
|
||||
- 这里调用这个方法,是为了处理oak-domain下面的entity
|
||||
- 分析entity信息,来自oak-domain/lib/compiler/schemalBuilder
|
||||
- 分析项目依赖analyzeDepedency
|
||||
- 这里通过分析依赖,获取到了全部的`通过这个框架搭建的依赖项目(generinal businiess)`的模块目录,并返回一个包名数组,为了下面再次解析entity
|
||||
- 来自oak-domain/lib/compiler/dependencyBuilder
|
||||
- 再次analyzeEntities,这次是分析`当前开发项目`的entity信息
|
||||
- 调用removeSync方法删除项目目录中建立的oak-app-domain目录
|
||||
- buildSchema
|
||||
- 调用这个方法重建oak-app-domain目录
|
||||
- 这个方法来自oak-domain/lib/compiler/schemalBuilder
|
||||
|
||||
- make:locale
|
||||
### make:locale
|
||||
|
||||
- 调用异步方法make
|
||||
- 调用异步方法make
|
||||
|
||||
- 调用scripts/make-locale.js脚本
|
||||
- 调用scripts/make-locale.js脚本
|
||||
|
||||
- 调用oak-domain/lib/compiler/localeBuilder下的LocaleBuilder类构造函数,传入false表示不不作为lib进行编译
|
||||
- 调用oak-domain/lib/compiler/localeBuilder下的LocaleBuilder类构造函数,传入false表示不不作为lib进行编译
|
||||
|
||||
> 什么时候作为lib编译?是什么意思?
|
||||
> 什么时候作为lib编译?是什么意思?
|
||||
|
||||
- 得到builder对象,执行build命令
|
||||
- 得到builder对象,执行build命令
|
||||
- 从进程参数中取得watch(const watch *=* process.argv[2];)
|
||||
- 两次取反(表示有东西就为true,不管输入什么)后传入build命令,如果为false表示不对目录进行监视,若为true则对目录进行实时监控
|
||||
|
||||
- 从进程参数中取得watch(const watch *=* process.argv[2];)
|
||||
- 两次取反(表示有东西就为true,不管输入什么)后传入build命令,如果为false表示不对目录进行监视,若为true则对目录进行实时监控
|
||||
### make:dependency
|
||||
|
||||
- make:dependency
|
||||
- 调用异步方法make
|
||||
- 调用scripts/make-dependency.js脚本
|
||||
- 调用oak-domain/lib/compiler/dependencyBuilder的默认方法,传入`watch *=* process.argv[2]`
|
||||
- `本函数用于构建src/initialize.dev, src/initialize.prod, src/initializeFeatures, src/context/FrontendContext, src/contextBackendContext`
|
||||
|
||||
### build
|
||||
|
||||
- build命令接收8个参数,依次是
|
||||
|
||||
-
|
||||
|
||||
1. `--sourcemap`:指定是否生成源映射文件。如果提供了该选项,则生成源映射文件;否则不生成。
|
||||
|
||||
2. `--analyze`:指定是否启用构建分析。如果提供了该选项,则启用构建分析;否则不启用。
|
||||
|
||||
3. `--memoryLimit <memoryLimit>`:指定 Node.js 进程的内存限制。可以通过提供一个数值作为参数来设置内存限制,单位可能是 MB。
|
||||
|
||||
4. `-t, --target <target>`:指定构建的目标环境。可以是 `'mp'`(微信小程序)、`'wechatMp'`(微信小程序)、`'web'`(Web)、`'rn'`(React Native)或 `'native'`(原生应用)。
|
||||
|
||||
5. `-m, --mode <mode>`:指定构建的模式。可以是 `'development'`(开发环境)、`'staging'`(预发布环境)或 `'production'`(生产环境)。
|
||||
|
||||
6. `-d, --subDir <subDirName>`:指定子目录名称,用于构建过程中的一些操作。如果未提供,则根据目标环境设定默认的子目录名称。
|
||||
|
||||
7. `-c, --check <level>`:指定错误检查级别。可以是 `'error'`(错误级别,会导致构建失败)或其他值(警告级别,不会导致构建失败)。
|
||||
|
||||
8. `-p, --platform <platform>`:指定原生应用的平台。可以是 `'ios'`(iOS)或 `'android'`(Android)。
|
||||
|
||||
这些参数提供了对构建过程的不同方面进行配置的选项,使得可以根据需要进行灵活的构建设置。
|
||||
|
||||
- build方法的执行流程如下:
|
||||
|
||||
- 根据给定的命令行参数,`build` 方法会按照以下方式进行处理:
|
||||
|
||||
1. **mode 和 target 参数处理**:
|
||||
- 如果提供了 `mode` 参数,则使用提供的值作为构建模式,否则默认为 `'development'`。
|
||||
- 如果提供了 `target` 参数,则使用提供的值作为构建目标。
|
||||
- 如果未提供 `target` 参数,则输出错误信息并结束执行。
|
||||
2. **subDir 参数处理**:
|
||||
- 如果提供了 `subDir` 参数,则使用提供的值作为子目录名称。
|
||||
- 如果未提供 subDir 参数,则根据目标类型设定默认的子目录名称:
|
||||
- 对于 `'mp'` 或 `'wechatMp'` 目标,默认子目录为 `'wechatMp'`。
|
||||
- 对于 `'native'` 或 `'rn'` 目标,默认子目录为 `'native'`。
|
||||
- 对于 `'web'` 目标,默认子目录为 `'web'`。
|
||||
3. **构建选项处理**:
|
||||
- 根据 check 参数确定错误级别:
|
||||
- 如果 `check` 参数为 `'error'`,则设置错误级别为 `true`,表示错误将导致构建失败。
|
||||
- 如果 `check` 参数为其他值(或未提供),则设置错误级别为 `false`,表示错误只会发出警告,但不会导致构建失败。
|
||||
- 如果提供了 `sourcemap` 参数,则将 `GENERATE_SOURCEMAP` 设置为 `true`,否则为 `false`。
|
||||
- 如果提供了 `analyze` 参数,则将 `COMPILE_ANALYZE` 设置为 `true`,否则为 `false`。
|
||||
- 如果提供了 `memoryLimit` 参数,则将 `MEMORY_LIMIT` 设置为提供的值。
|
||||
4. **根据不同的目标类型执行不同的操作**:
|
||||
- 对于微信小程序(`'mp'` 或 `'wechatMp'`):根据提供的模式执行不同的脚本文件。
|
||||
- 对于 Web 环境(`'web'`):根据提供的模式执行不同的脚本文件,并传递端口号参数。
|
||||
- 对于原生应用(`'native'` 或 `'rn'`):根据提供的模式执行不同的操作,包括拷贝文件和执行相应的命令。
|
||||
5. **执行结果处理**:
|
||||
- 根据执行结果输出相应的成功或失败信息。
|
||||
|
||||
- ```markdown
|
||||
- build(cmd: any)
|
||||
- 参数解构
|
||||
- mode = cmd.mode || 'development'
|
||||
- target = cmd.target
|
||||
- 如果未指定目标,输出错误信息并返回
|
||||
- 子目录处理
|
||||
- 如果未指定子目录,根据目标设置默认子目录
|
||||
- 调用 makeLocale('', mode === 'development')
|
||||
- 调用 makeRouter({ subdir }, mode === 'development')
|
||||
- 调用 makeDep('')
|
||||
- 构建选项处理
|
||||
- 确定错误级别
|
||||
- 输出成功信息
|
||||
- 根据目标类型执行不同操作
|
||||
- 对于微信小程序
|
||||
- 执行不同的脚本文件
|
||||
- 对于 Web 环境
|
||||
- 执行不同的脚本文件,并传递端口号参数
|
||||
- 对于原生应用
|
||||
- 执行不同的操作,包括拷贝文件和执行命令
|
||||
- 执行结果处理
|
||||
- 输出成功或失败信息
|
||||
```
|
||||
|
||||
|
||||
### create 命令
|
||||
|
||||
- `<name>`:项目名称,是必选参数,用于指定要创建的新项目的名称。
|
||||
|
||||
- `-d, --dev`:开发模式标志,可选参数,如果提供了该选项,则表示在开发模式下创建项目。
|
||||
|
||||
- ```markdown
|
||||
- create(dirName: string, cmd: any)
|
||||
- 获取项目相关信息
|
||||
- 构造 package.json 内容
|
||||
- 构造 tsconfig.json 内容
|
||||
- 创建项目根目录及相关文件
|
||||
- 复制模板文件到项目目录
|
||||
- 如果需要,创建微信小程序和 Web 相关文件
|
||||
- 安装依赖(如果 npm 可用)
|
||||
- 输出成功信息或错误信息
|
||||
```
|
||||
|
||||
|
||||
|
||||
### update 命令
|
||||
|
||||
- `<name>`:项目名称,是必选参数,用于指定要更新的项目的名称。
|
||||
|
||||
- `[subDirName]`:子目录名称,可选参数,用于指定要更新的项目的子目录名称。
|
||||
|
||||
- `-d, --dev`:开发模式标志,可选参数,如果提供了该选项,则表示在开发模式下更新项目。
|
||||
|
||||
- ````markdown
|
||||
- update(dirName: string, subDirName: string, cmd: any)
|
||||
- 根据子目录名称选择需要更新的文件夹
|
||||
- 检查项目名称是否存在
|
||||
- 如果是更新 `src` 目录,则直接复制对应模板文件
|
||||
- 如果是更新微信小程序相关目录,则复制模板文件,并在需要时创建新文件
|
||||
- 输出成功信息或错误信息
|
||||
````
|
||||
|
||||
|
||||
|
||||
### run 命令
|
||||
|
||||
- `-p, --platform <platform>`:指定要运行的平台,是必选参数。可以是 `'ios'`(iOS)或 `'android'`(Android)。
|
||||
|
||||
- `-d, --subDir <subDirName>`:指定项目的子目录名称,可选参数,默认为 `'native'`。
|
||||
|
||||
- `-m, --mode <mode>`:指定运行模式,可选参数,默认为 `'development'`。可以是 `'development'`(开发模式)、`'staging'`(预发布模式)或 `'production'`(生产模式)。
|
||||
|
||||
- `-suffix, --appIdSuffix <appIdSuffix>`:指定应用程序 ID 后缀,可选参数。
|
||||
|
||||
- ````markdown
|
||||
- run(options: any): Promise<void>
|
||||
- 获取当前项目路径和目标目录路径
|
||||
- 根据平台执行不同的操作
|
||||
- 如果是 iOS 平台,执行 `react-native run-ios`
|
||||
- 如果是 Android 平台,执行 `react-native run-android`
|
||||
- 输出成功信息或错误信息
|
||||
````
|
||||
|
||||
|
||||
|
||||
### clean 命令
|
||||
|
||||
- `-p, --platform <platform>`:指定要清理的平台,是必选参数。可以是 `'ios'`(iOS)或 `'android'`(Android)。
|
||||
|
||||
- `-d, --subDir <subDirName>`:指定项目的子目录名称,可选参数,默认为 `'native'`。
|
||||
|
||||
- ````markdown
|
||||
- clean(options: any)
|
||||
- 获取当前项目路径和目标目录路径
|
||||
- 根据平台执行不同的操作
|
||||
- 如果是 iOS 平台,执行清理操作
|
||||
- 如果是 Android 平台,执行清理操作
|
||||
- 输出成功信息或错误信息
|
||||
````
|
||||
|
||||
- 调用异步方法make
|
||||
- 调用scripts/make-dependency.js脚本
|
||||
- 调用oak-domain/lib/compiler/dependencyBuilder的默认方法,传入`watch *=* process.argv[2]`
|
||||
- `本函数用于构建src/initialize.dev, src/initialize.prod, src/initializeFeatures, src/context/FrontendContext, src/contextBackendContext`
|
||||
|
||||
-
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue