From c11e9690c3b3ee611230149246c7437a946ab8ec Mon Sep 17 00:00:00 2001 From: wxzhang Date: Sat, 28 Jan 2023 10:14:43 +0800 Subject: [PATCH] fix voerkai18n init --- docs/src/guide/intro/history.md | 7 ++++ docs/src/guide/tools/cli.md | 60 ++++++++++++++++++---------- packages/cli/index.js | 7 ++-- packages/cli/templates/entry.js | 3 ++ packages/cli/templates/entry.ts | 3 ++ packages/cli/templates/init-entry.js | 8 ++-- packages/cli/templates/init-entry.ts | 10 ++--- 7 files changed, 63 insertions(+), 35 deletions(-) diff --git a/docs/src/guide/intro/history.md b/docs/src/guide/intro/history.md index 52a48fa..651c6d4 100644 --- a/docs/src/guide/intro/history.md +++ b/docs/src/guide/intro/history.md @@ -1,4 +1,11 @@ # 更新日志 +## 2023/1/28 + +- 修复`voerkai18n init`生成`index.js`时的`i18nScope`拼写错误 +- `voerkai18n init`添加`--typescript`参数支持 +- 修复`voerkai18n init`的`moduleType=auto`时生成文件类型的问题 +- 更新文档 + ## 2023/1/27 - 修复`voerkai18n init`生成的初始文件不完整的问题 diff --git a/docs/src/guide/tools/cli.md b/docs/src/guide/tools/cli.md index 11d0885..9a8e29c 100644 --- a/docs/src/guide/tools/cli.md +++ b/docs/src/guide/tools/cli.md @@ -49,7 +49,9 @@ Arguments: Options: -D, --debug 输出调试信息 -r, --reset 重新生成当前项目的语言配置 + -m, --moduleType [types] 输出模块类型,取值auto(默认),esm,cjs -lngs, --languages 支持的语言列表 (default: ["zh","en"]) + -t, --typescript 输出typescript代码 -d, --defaultLanguage 默认语言 -a, --activeLanguage 激活语言 -h, --help display help for command @@ -72,7 +74,9 @@ Options: languages 多语言目录
  • index.md
  • @@ -107,21 +111,21 @@ module.exports = { **说明:** -- 您也可以手动自行创建`languages/settings.json`文件。这样就不需运行`voerkai18n init`命令了。 - - 如果你的源码放在`src`文件夹,则`init`命令会自动在在`src`文件夹下创建`languages`文件夹。 -- `voerkai18n init`是可选的,直接使用`extract`时也会自动创建相应的文件。 - - `-m`参数用来指定生成的`settings.json`的模块类型: - - 当`-m=auto`时,会自动读取前工程`package.json`中的`type`字段 + - 当`-m=auto`时,会自动根据前工程`package.json`中的`type`字段等信息来决定源码的模块类型 - 当`-m=esm`时,会生成`ESM`模块类型的`settings.json`。 - 当`-m=cjs`时,会生成`commonjs`模块类型的`settings.json`。 - `location`参数是可选的,如果没有指定则采用当前目录。 +- `voerkai18n init`能识别当前是否是`typescript`工程,方法是通过检查是否存在`tsconfig.json`来判断。也可以显式指定`voerkai18n init --typescript`来生成对应的`typescript`源码。 如果你想将`languages`安装在`src/languages`下,则可以指定`voerkai18n init ./src` +- 生成在`idMap`文件是一个空文件,后续会自动更新,不需要修改。 +- `index.(js|ts)`也是一个占位文件,后续执行`compile`时会覆盖重新生成 + ## 提取文本 - extract 扫描提取当前项目中的所有源码,提取出所有需要翻译的文本内容并保存在到`<工程源码目录>/languages/translates/*.json`。 @@ -239,24 +243,38 @@ Options: `voerkai18n compile`执行后会在`langauges`文件夹下输出: -```javascript | pure -myapp - |--- langauges - |-- index.js // 当前作用域的源码 - |-- idMap.js // 翻译文本与id的映射文件 - |-- formatters // 自定义格式化器 - |-- zh.js // 中文格式化器定义 - |-- en.js // 英文格式化器定义 - |-- xx.js // 其他语言格式化器定义 - |-- zh.js // 中文语言包 - |-- en.js // 英文语言包 - |-- xx.js // 其他语言包 - |-- ... -``` + +
      +
    • + languages多语言目录 +
        +
      • settings.json
      • +
      • index.(js|ts)
      • +
      • idMap.(js|ts)
      • +
      • zh.(js|ts)
      • +
      • en.(js|ts)
      • +
      • xx.(js|ts)
      • +
      • + formatters格式化器 +
          +
        • zh.(js|ts)
        • +
        • en.(js|ts)
        • +
        • xx.(js|ts)
        • +
        +
      • +
      +
    • +
    • index.md
    • +
    • package.json
    • +
    • ...
    • +
    +
    + **说明:** - 在当前工程目录下,一般不需要指定参数就可以反复多次进行编译。 - 您每次修改了源码并`extract`后,均应该再次运行`compile`命令。 - 如果您修改了`formatters.js`,执行`compile`命令不会重新生成和修改该文件。 -- 默认情况下,`compile`命令当发现当前工程存在`ts.config.ts`时,会生成`languages/**/*.ts`。也可以显式指定`voerkai18n compile --typescript`来生成`ts`源码,或者显式指定`voerkai18n compile --typescript=false`来禁用生成`ts`源码。 \ No newline at end of file +- 默认情况下,`compile`命令当发现当前工程存在`ts.config.ts`时,会生成`languages/**/*.ts`。也可以显式指定`voerkai18n compile --typescript`来生成`ts`源码,或者显式指定`voerkai18n compile --typescript=false`来禁用生成`ts`源码。 +- **注意**,`compile`命令会重新覆盖`languages/index.(js|ts)`。 \ No newline at end of file diff --git a/packages/cli/index.js b/packages/cli/index.js index 61f3976..4493208 100644 --- a/packages/cli/index.js +++ b/packages/cli/index.js @@ -29,6 +29,7 @@ program .option('-D, --debug', t('输出调试信息')) .option('-m, --moduleType [types]', t('输出模块类型,取值auto,esm,cjs'), 'auto') .option('-r, --reset', t('重新生成当前项目的语言配置')) + .option('-t, --typescript',t("输出typescript代码")) .option('-lngs, --languages ', t('支持的语言列表'), ['zh','en']) .option('-d, --defaultLanguage ', t('默认语言'), 'zh') .option('-a, --activeLanguage ', t('激活语言'), 'zh') @@ -89,7 +90,7 @@ program .command('compile') .description(t('编译指定项目的语言包')) .option('-D, --debug', t('输出调试信息')) - .option('-t, --typescript') + .option('-t, --typescript',t("输出typescript代码")) .option('-m, --moduleType [types]', t('输出模块类型,取值auto,esm,cjs'), 'esm') .argument('[location]', t('工程项目所在目录'),"./") .hook("preAction",async function(location){ @@ -133,6 +134,4 @@ program program.parseAsync(process.argv); - -const options = program.opts(); - + \ No newline at end of file diff --git a/packages/cli/templates/entry.js b/packages/cli/templates/entry.js index 87c0c1a..629eb30 100644 --- a/packages/cli/templates/entry.js +++ b/packages/cli/templates/entry.js @@ -1,3 +1,6 @@ +/** + * 注意:执行compile命令会生新后成本文件,所以请不要修改本文件 + */ {{if moduleType === "esm"}} import messageIds from "./idMap.js" // 语言ID映射文件 import runtime from "@voerkai18n/runtime" diff --git a/packages/cli/templates/entry.ts b/packages/cli/templates/entry.ts index 90ba321..3c9c71a 100644 --- a/packages/cli/templates/entry.ts +++ b/packages/cli/templates/entry.ts @@ -1,3 +1,6 @@ +/** + * 注意:执行compile命令会生新后成本文件,所以请不要修改本文件 + */ import messageIds from "./idMap" // 语言ID映射文件 import runtime from "@voerkai18n/runtime" const { translate,VoerkaI18nScope } = runtime diff --git a/packages/cli/templates/init-entry.js b/packages/cli/templates/init-entry.js index 0a61076..31be23c 100644 --- a/packages/cli/templates/init-entry.js +++ b/packages/cli/templates/init-entry.js @@ -1,9 +1,9 @@ /** * 初始化入口 - * - * 本文件仅供在执行voerkai18n extract&compile前提供t函数引用 - * - */ +* +* 注意:执行compile命令会生新后成本文件,所以请不要修改本文件 +* 本文件仅供在执行voerkai18n extract&compile前提供t函数占位引用 +*/ {{if moduleType === "esm"}} import runtime from "@voerkai18n/runtime" const { translate,VoerkaI18nScope } = runtime diff --git a/packages/cli/templates/init-entry.ts b/packages/cli/templates/init-entry.ts index 54a70a5..fa62398 100644 --- a/packages/cli/templates/init-entry.ts +++ b/packages/cli/templates/init-entry.ts @@ -1,9 +1,7 @@ -/** - * 初始化入口 - * - * 本文件仅供在执行voerkai18n extract&compile前提供t函数引用 - * - */ +/* +* 注意:执行compile命令会生新后成本文件,所以请不要修改本文件 +* 本文件仅供在执行voerkai18n extract&compile前提供t函数占位引用 +*/ import runtime from "@voerkai18n/runtime" const { translate,VoerkaI18nScope } = runtime