From 5e4dbf21f03d96aca9e803f860a24e136baa750a Mon Sep 17 00:00:00 2001 From: wxzhang Date: Sun, 29 Jan 2023 18:06:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=8D=87?= =?UTF-8?q?=E7=BA=A7runtime=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/cli/compile.command.js | 16 ++++++++++++++-- packages/utils/index.js | 17 ++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) 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