添加自动升级runtime逻辑

This commit is contained in:
wxzhang 2023-01-29 18:06:47 +08:00
parent ff45b9a028
commit 5e4dbf21f0
2 changed files with 30 additions and 3 deletions

View File

@ -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);

View File

@ -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 // 升级包
}