chore: unify i18n resolve in dev

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei 2025-06-13 01:07:10 +08:00
parent 9801006cb7
commit b326501fc3
No known key found for this signature in database
GPG Key ID: 0F62D33977F021F7
3 changed files with 44 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import { getGitHash } from "../../../scripts/lib"
import { astPlugin } from "../plugins/vite/ast"
import { circularImportRefreshPlugin } from "../plugins/vite/hmr"
import { customI18nHmrPlugin } from "../plugins/vite/i18n-hmr"
import { localesJsonPlugin } from "../plugins/vite/locales-json"
import i18nCompleteness from "../plugins/vite/utils/i18n-completeness"
const pkgDir = resolve(dirname(fileURLToPath(import.meta.url)), "..")
@ -73,6 +74,7 @@ export const viteRenderBaseConfig = {
})
},
},
localesJsonPlugin(),
react({
// jsxImportSource: "@welldone-software/why-did-you-render", // <-----
}),

View File

@ -0,0 +1,41 @@
import path from "node:path"
import { fileURLToPath } from "node:url"
import { set } from "es-toolkit/compat"
import type { Plugin } from "vite"
const __dirname = fileURLToPath(new URL(".", import.meta.url))
const localesDir = path.resolve(__dirname, "../../../../locales")
export function localesJsonPlugin(): Plugin {
let isBuild = false
return {
name: "locales-json-transform",
enforce: "pre",
configResolved(config) {
isBuild = config.command === "build"
},
async transform(code, id) {
if (isBuild) {
return null
}
if (!id.includes(localesDir) || !id.endsWith(".json")) {
return null
}
const content = JSON.parse(code)
const obj = {}
const keys = Object.keys(content as object)
for (const accessorKey of keys) {
set(obj, accessorKey, (content as any)[accessorKey])
}
console.info("[locales-json-transform] Transformed:", id)
return {
code: JSON.stringify(obj),
map: null,
}
},
}
}

View File

@ -137,6 +137,7 @@ export default ({ mode }) => {
},
plugins: [
...((viteRenderBaseConfig.plugins ?? []) as any),
localesPlugin(),
isWebBuild &&
VitePWA({