@voerkai18n/utils
Version:
utils for voerkai18n
60 lines (49 loc) • 1.57 kB
text/typescript
/**
*
* 获取VoerkaI18n语言文件夹
*
*/
import { getSettingsFromPackageJson } from "./getSettingsFromPackageJson"
import fs from "node:fs"
import path from "node:path"
import { getDefaultLanguageDir } from "./getDefaultLanguageDir"
export type LanguagesDirOptions = {
location? : string
autoCreate? : boolean
absolute? : boolean // 是否返回绝对路径
}
/**
*
* 获取语言工作文件夹
*
* - 读取package.json中的voerkai18n字段
* - 如果没有,则在当前文件夹下查找
* - <src/languages>
* - <languages>
*
* 如果目录不存在,则自动创建
*
*
* @returns
* @param location 指定入口文件夹
* @param created 是否创建
*/
export function getLanguageDir(options?:LanguagesDirOptions):string{
const { location,autoCreate,absolute } = Object.assign({
autoCreate:true,
absolute:true
}, options)
const cwd = process.env.INIT_CWD || process.cwd()
try{
const { entry } = getSettingsFromPackageJson(location)
let langDir :string = entry || getDefaultLanguageDir()
langDir = path.isAbsolute(langDir) ? langDir : path.join(cwd,langDir)
if(autoCreate && !fs.existsSync(langDir)){
fs.mkdirSync(langDir,{ recursive: true })
}
return absolute ? langDir : path.relative(cwd,langDir)
}catch(e){
console.error("获取语言文件夹失败",e)
return "src/languages"
}
}