diff --git a/packages/cli/compile.command.js b/packages/cli/compile.command.js index c19bedc..080bfbf 100644 --- a/packages/cli/compile.command.js +++ b/packages/cli/compile.command.js @@ -25,12 +25,13 @@ const glob = require("glob") const createLogger = require("logsets") const path = require("path") -const { findModuleType,getCurrentPackageJson} = require("@voerkai18n/utils") +const { findModuleType,getCurrentPackageJson, getInstalledPackageInfo, getPackageReleaseInfo} = require("@voerkai18n/utils") const { t } = require("./i18nProxy") const fs = require("fs-extra") const logger = createLogger() const artTemplate = require("art-template") - +const semver = require("semver") + function normalizeCompileOptions(opts={}) { let options = Object.assign({ moduleType:"auto", // 指定编译后的语言文件的模块类型,取值common,cjs,esm,es @@ -63,6 +64,17 @@ function generateFormatterFile(langName,{isTypeScript,formattersFolder,templateC } } +/** + * 将@voerkai18n/runtime更新到最新版本 + */ +async function updateRuntime(){ + const curVersion = getInstalledPackageInfo("@voerkai18n/runtime").version + const latestVersion = (await getPackageReleaseInfo("@voerkai18n/runtime")).lastVersion + if(semver.gt(latestVersion, curVersion)){ + await upgradePackage("@voerkai18n/runtime") + } +} + module.exports =async function compile(langFolder,opts={}){ const options = normalizeCompileOptions(opts); diff --git a/packages/utils/index.js b/packages/utils/index.js index e426e0b..1e823af 100644 --- a/packages/utils/index.js +++ b/packages/utils/index.js @@ -535,6 +535,20 @@ function installPackage(packageName){ shelljs.exec(`npm install ${packageName}`) } } +function upgradePackage(packageName){ + const packageTool = getPackageTool() + try{ + if(packageTool=='pnpm'){ + shelljs.exec(`pnpm update ${packageName}`) + }else if(packageTool=='yarn'){ + shelljs.exec(`yarn upgrade ${packageName}`) + }else{ + shelljs.exec(`npm upgrade ${packageName}`) + } + }catch{ + shelljs.exec(`npm upgrade ${packageName}`) + } +} /** @@ -716,5 +730,6 @@ module.exports = { importTranslateFunction, // 在代码中导入t函数 asyncExecShellScript, // 异步执行一段脚本并返回结果 getPackageReleaseInfo, // 从npm上读取指定包的信息 - getInstalledPackageInfo // 返回当前工程已安装的包信息,主要是版本号 + getInstalledPackageInfo, // 返回当前工程已安装的包信息,主要是版本号 + upgradePackage // 升级包 } \ No newline at end of file