UNPKG

vite-intlayer

Version:

A Vite plugin for seamless internationalization (i18n), providing locale detection, redirection, and environment-based configuration

86 lines 2.54 kB
import { cleanOutputDir, prepareIntlayer, runOnce, watch } from "@intlayer/chokidar"; import intlayerConfig from "@intlayer/config/built"; import { join, relative, resolve } from "path"; import { IntlayerPrunePlugin } from "./intlayerPrunePlugin.mjs"; cleanOutputDir(); const intlayerPlugin = () => { const { mainDir, configDir, baseDir, watch: isWatchMode } = intlayerConfig.content; const { optimize } = intlayerConfig.build; const plugins = [ { name: "vite-intlayer-plugin", config: (config) => { const dictionariesPath = join(mainDir, "dictionaries.mjs"); const relativeDictionariesPath = relative(baseDir, dictionariesPath); const unmergedDictionariesPath = join( mainDir, "unmerged_dictionaries.mjs" ); const relativeUnmergedDictionariesPath = relative( baseDir, unmergedDictionariesPath ); const configurationPath = join(configDir, "configuration.json"); const relativeConfigurationPath = relative(baseDir, configurationPath); config.resolve = { ...config.resolve, alias: { ...config.resolve?.alias, "@intlayer/dictionaries-entry": resolve(relativeDictionariesPath), "@intlayer/unmerged-dictionaries-entry": resolve( relativeUnmergedDictionariesPath ), "@intlayer/config/built": resolve(relativeConfigurationPath) } }; if (isWatchMode) { config.optimizeDeps = { ...config.optimizeDeps, exclude: [ ...config.optimizeDeps?.exclude ?? [], "@intlayer/dictionaries-entry", "@intlayer/unmerged-dictionaries-entry", "@intlayer/config/built" ] }; } return config; }, configureServer: async (server) => { if (intlayerConfig.content.watch) { watch({ configuration: intlayerConfig }); } }, buildStart: async () => { const sentinelPath = join( intlayerConfig.content.baseDir, ".intlayer", "cache", "intlayer-prepared.lock" ); await runOnce( sentinelPath, async () => await prepareIntlayer(intlayerConfig) ); } } ]; if (optimize) { plugins.push(IntlayerPrunePlugin(intlayerConfig)); } return plugins; }; export { intlayerPlugin }; //# sourceMappingURL=intlayerPlugin.mjs.map