修复voerkai18n init时生成Voerkai18nScope的命名错误

This commit is contained in:
wxzhang 2023-01-28 09:33:09 +08:00
parent 9efffdf201
commit 7e9e4b7ed8
3 changed files with 46 additions and 6 deletions

View File

@ -22,14 +22,12 @@ program
banner.add("版本号:",`${require("./package.json").version}`,{style:["","yellow"]})
banner.render()
})
program
.command('init')
.argument('[location]', t('工程项目所在目录'))
.description(t('初始化项目国际化配置'))
.option('-D, --debug', t('输出调试信息'))
.option('-m, --moduleType [types]', t('输出模块类型,取值auto,esm,cjs'), 'esm')
.option('-m, --moduleType [types]', t('输出模块类型,取值auto,esm,cjs'), 'auto')
.option('-r, --reset', t('重新生成当前项目的语言配置'))
.option('-lngs, --languages <languages...>', t('支持的语言列表'), ['zh','en'])
.option('-d, --defaultLanguage <name>', t('默认语言'), 'zh')

View File

@ -9,7 +9,7 @@ const fs = require("fs")
const { t } = require("./i18nProxy")
const createLogger = require("logsets")
const logger = createLogger()
const { installPackage } = require("@voerkai18n/utils")
const { installPackage,getCurrentPackageJson } = require("@voerkai18n/utils")
const artTemplate = require("art-template")
function getLanguageList(langs,defaultLanguage){
@ -38,9 +38,51 @@ function getLanguageList(langs,defaultLanguage){
}
}
/**
* 获取当前项目的模块类型
*
* 1. <package.json>.type="module"
* 2. 当前工程的index.(js|ts)是否包含了import xx from
* 3. 检查是否是typescript工程
*
*
*/
module.exports = function(srcPath,{moduleType='cjs',isTypeScript,debug = true,languages=["zh","en"],defaultLanguage="zh",activeLanguage="zh",reset=false}={}){
function getProjectModuleType(srcPath,isTypeScript){
// <package.json>.type="module"
try{
let packageJson = getCurrentPackageJson(srcPath)
if(packageJson.type=="module") return "esm"
}catch{}
// 检查入口文件
const importRegex = /import\s*.*\s*from\s*(["']).*\1/gm
const extryFiels = [
path.join(srcPath,"index.js"),
path.join(srcPath,"src","index.js"),
path.join(srcPath,"main.js"),
path.join(srcPath,"src","main.js"),
]
for(let file of extryFiels){
try{
const source = fs.readFileSync(file)
if(importRegex.test(source)){
return 'esm'
}
}catch{}
}
return isTypeScript ? 'esm' : 'cjs'
}
module.exports = function(srcPath,{moduleType,isTypeScript,debug = true,languages=["zh","en"],defaultLanguage="zh",activeLanguage="zh",reset=false}={}){
let settings = {}
// 检查当前项目的模块类型
if(!['esm',"cjs"].includes(moduleType)){
moduleType = getProjectModuleType(srcPath)
}
let tasks = logger.tasklist("初始化VoerkaI18n工程")
const langFolderName = "languages"
// 查找当前项目的语言包类型路径

View File

@ -8,7 +8,7 @@
import runtime from "@voerkai18n/runtime"
const { translate,VoerkaI18nScope } = runtime
{{else}}
const { translate,i18nScope } = require("@voerkai18n/runtime")
const { translate,VoerkaI18nScope } = require("@voerkai18n/runtime")
{{/if}}