oak-cli done

This commit is contained in:
pqcqaq 2024-04-20 23:25:56 +08:00
parent c5b794dffe
commit 3a0fab660e
1 changed files with 182 additions and 30 deletions

View File

@ -8,11 +8,11 @@
- 路径src/index.ts
- -v
### -v
- 显示版本信息来自package.json
- make:domain
### make:domain
- 调用异步方法make
- 调用script目录下的make-app-domain.js脚本
@ -28,7 +28,7 @@
- 调用这个方法重建oak-app-domain目录
- 这个方法来自oak-domain/lib/compiler/schemalBuilder
- make:locale
### make:locale
- 调用异步方法make
@ -39,16 +39,168 @@
> 什么时候作为lib编译是什么意思
- 得到builder对象执行build命令
- 从进程参数中取得watchconst 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 平台,执行清理操作
- 输出成功信息或错误信息
````