mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-25 16:16:20 +08:00
refactor: refactor locales, separate locales within apps,fixed #12
This commit is contained in:
@@ -4,7 +4,7 @@ import type { DefineApplicationOptions } from '../typing';
|
||||
|
||||
import { defineConfig, loadEnv, mergeConfig } from 'vite';
|
||||
|
||||
import { getApplicationConditionPlugins } from '../plugins';
|
||||
import { loadApplicationPlugins } from '../plugins';
|
||||
import { getCommonConfig } from './common';
|
||||
|
||||
function defineApplicationConfig(options: DefineApplicationOptions = {}) {
|
||||
@@ -15,7 +15,7 @@ function defineApplicationConfig(options: DefineApplicationOptions = {}) {
|
||||
const isBuild = command === 'build';
|
||||
const env = loadEnv(mode, root);
|
||||
|
||||
const plugins = await getApplicationConditionPlugins({
|
||||
const plugins = await loadApplicationPlugins({
|
||||
compress: false,
|
||||
compressTypes: ['brotli', 'gzip'],
|
||||
devtools: true,
|
||||
|
@@ -6,7 +6,7 @@ import { readPackageJSON } from '@vben/node-utils';
|
||||
|
||||
import { defineConfig, mergeConfig } from 'vite';
|
||||
|
||||
import { getLibraryConditionPlugins } from '../plugins';
|
||||
import { loadLibraryPlugins } from '../plugins';
|
||||
import { getCommonConfig } from './common';
|
||||
|
||||
function defineLibraryConfig(options: DefineLibraryOptions = {}) {
|
||||
@@ -16,7 +16,7 @@ function defineLibraryConfig(options: DefineLibraryOptions = {}) {
|
||||
const { library = {}, vite = {} } = options;
|
||||
const isBuild = command === 'build';
|
||||
|
||||
const plugins = await getLibraryConditionPlugins({
|
||||
const plugins = await loadLibraryPlugins({
|
||||
dts: false,
|
||||
injectLibCss: true,
|
||||
injectMetadata: true,
|
||||
|
@@ -9,7 +9,7 @@ import type {
|
||||
|
||||
import { join } from 'node:path';
|
||||
|
||||
import { getPackage } from '@vben/node-utils';
|
||||
import { getPackage, getPackages } from '@vben/node-utils';
|
||||
|
||||
import viteVueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
|
||||
import viteVue from '@vitejs/plugin-vue';
|
||||
@@ -33,9 +33,7 @@ import { viteLicensePlugin } from './license';
|
||||
* 获取条件成立的 vite 插件
|
||||
* @param conditionPlugins
|
||||
*/
|
||||
async function getConditionEstablishedPlugins(
|
||||
conditionPlugins: ConditionPlugin[],
|
||||
) {
|
||||
async function loadConditionPlugins(conditionPlugins: ConditionPlugin[]) {
|
||||
const plugins: PluginOption[] = [];
|
||||
for (const conditionPlugin of conditionPlugins) {
|
||||
if (conditionPlugin.condition) {
|
||||
@@ -49,7 +47,7 @@ async function getConditionEstablishedPlugins(
|
||||
/**
|
||||
* 根据条件获取通用的vite插件
|
||||
*/
|
||||
async function getCommonConditionPlugins(
|
||||
async function loadCommonPlugins(
|
||||
options: CommonPluginOptions,
|
||||
): Promise<ConditionPlugin[]> {
|
||||
const { devtools, injectMetadata, isBuild, visualizer } = options;
|
||||
@@ -89,7 +87,7 @@ async function getCommonConditionPlugins(
|
||||
/**
|
||||
* 根据条件获取应用类型的vite插件
|
||||
*/
|
||||
async function getApplicationConditionPlugins(
|
||||
async function loadApplicationPlugins(
|
||||
options: ApplicationPluginOptions,
|
||||
): Promise<PluginOption[]> {
|
||||
// 单独取,否则commonOptions拿不到
|
||||
@@ -112,15 +110,33 @@ async function getApplicationConditionPlugins(
|
||||
...commonOptions
|
||||
} = options;
|
||||
|
||||
const commonPlugins = await getCommonConditionPlugins(commonOptions);
|
||||
const commonPlugins = await loadCommonPlugins(commonOptions);
|
||||
|
||||
return await getConditionEstablishedPlugins([
|
||||
return await loadConditionPlugins([
|
||||
...commonPlugins,
|
||||
{
|
||||
condition: i18n,
|
||||
plugins: async () => {
|
||||
const pkg = await getPackage('@vben/locales');
|
||||
const include = `${join(pkg?.dir ?? '', isBuild ? 'dist' : 'src', 'langs')}/*.yaml`;
|
||||
const { packages } = await getPackages();
|
||||
const pkg = await getPackage('@vben-core/locales');
|
||||
|
||||
const include: string[] = [
|
||||
`${join(pkg?.dir ?? '', isBuild ? 'dist' : 'src', 'langs')}/*.yaml`,
|
||||
];
|
||||
|
||||
// 加载所有应用的国际化文件
|
||||
for (const { dir, relativeDir } of packages) {
|
||||
if (
|
||||
// 排除非应用目录
|
||||
!relativeDir.startsWith('apps') ||
|
||||
// 排除mock目录
|
||||
relativeDir.includes('backend-mock')
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
include.push(`${join(dir, 'src', 'locales', 'langs')}/*.yaml`);
|
||||
}
|
||||
|
||||
return [
|
||||
viteVueI18nPlugin({
|
||||
compositionOnly: true,
|
||||
@@ -204,14 +220,14 @@ async function getApplicationConditionPlugins(
|
||||
/**
|
||||
* 根据条件获取库类型的vite插件
|
||||
*/
|
||||
async function getLibraryConditionPlugins(
|
||||
async function loadLibraryPlugins(
|
||||
options: LibraryPluginOptions,
|
||||
): Promise<PluginOption[]> {
|
||||
// 单独取,否则commonOptions拿不到
|
||||
const isBuild = options.isBuild;
|
||||
const { dts, injectLibCss, ...commonOptions } = options;
|
||||
const commonPlugins = await getCommonConditionPlugins(commonOptions);
|
||||
return await getConditionEstablishedPlugins([
|
||||
const commonPlugins = await loadCommonPlugins(commonOptions);
|
||||
return await loadConditionPlugins([
|
||||
...commonPlugins,
|
||||
{
|
||||
condition: isBuild && !!dts,
|
||||
@@ -225,8 +241,8 @@ async function getLibraryConditionPlugins(
|
||||
}
|
||||
|
||||
export {
|
||||
getApplicationConditionPlugins,
|
||||
getLibraryConditionPlugins,
|
||||
loadApplicationPlugins,
|
||||
loadLibraryPlugins,
|
||||
viteCompressPlugin,
|
||||
viteDtsPlugin,
|
||||
viteHtmlPlugin,
|
||||
|
Reference in New Issue
Block a user