Skip to content

Commit 0cd8506

Browse files
authored
refactor: cleanup dep constants and configuration (#3854)
1 parent c2309c1 commit 0cd8506

File tree

5 files changed

+28
-36
lines changed

5 files changed

+28
-36
lines changed

src/alias.ts

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
import { directoryToURL, resolveModule } from '@nuxt/kit'
2-
import {
3-
CORE_BASE_PKG,
4-
CORE_PKG,
5-
MESSAGE_COMPILER_PKG,
6-
NUXT_I18N_MODULE_ID,
7-
SHARED_PKG,
8-
UTILS_H3_PKG,
9-
UTILS_PKG,
10-
VUE_I18N_PKG,
11-
} from './constants'
2+
import { NUXT_I18N_MODULE_ID } from './constants'
123
import { defu } from 'defu'
134
import { resolveI18nDir } from './layers'
145
import { getLayerI18n } from './utils'
@@ -17,14 +8,14 @@ import { relative, resolve } from 'pathe'
178
import type { Nuxt } from '@nuxt/schema'
189
import type { I18nNuxtContext } from './context'
1910

20-
export function setupAlias({ userOptions: options }: I18nNuxtContext, nuxt: Nuxt) {
11+
export function setupAlias({ vueI18nRuntimeOnly }: I18nNuxtContext, nuxt: Nuxt) {
2112
const modules = {
22-
[VUE_I18N_PKG]: `${VUE_I18N_PKG}/dist/vue-i18n${!nuxt.options.dev && !nuxt.options._prepare && options.bundle?.runtimeOnly ? '.runtime' : ''}.mjs`,
23-
[SHARED_PKG]: `${SHARED_PKG}/dist/shared.mjs`,
24-
[MESSAGE_COMPILER_PKG]: `${MESSAGE_COMPILER_PKG}/dist/message-compiler.mjs`,
25-
[CORE_BASE_PKG]: `${CORE_BASE_PKG}/dist/core-base.mjs`,
26-
[CORE_PKG]: `${CORE_PKG}/dist/core.node.mjs`,
27-
[UTILS_H3_PKG]: `${UTILS_PKG}/dist/h3.mjs`, // for `@intlify/utils/h3`
13+
'vue-i18n': `vue-i18n/dist/vue-i18n${vueI18nRuntimeOnly ? '.runtime' : ''}`,
14+
'@intlify/shared': `@intlify/shared/dist/shared`,
15+
'@intlify/message-compiler': `@intlify/message-compiler/dist/message-compiler`,
16+
'@intlify/core': `@intlify/core/dist/core.node`,
17+
'@intlify/core-base': `@intlify/core-base/dist/core-base`,
18+
'@intlify/utils/h3': `@intlify/utils/dist/h3`,
2819
} as const
2920

3021
const layerI18nDirs = nuxt.options._layers
@@ -42,10 +33,6 @@ export function setupAlias({ userOptions: options }: I18nNuxtContext, nuxt: Nuxt
4233
},
4334
})
4435

45-
// Exclude ESM dependencies from optimization
46-
// @see https://github.com/nuxt/nuxt/blob/8db24c6a7fbcff7ab74b3ce1a196daece2f8c701/packages/vite/src/shared/client.ts#L9-L20
47-
nuxt.options.vite = defu(nuxt.options.vite, { optimizeDeps: { exclude: [UTILS_PKG, ...moduleIds] } })
48-
4936
const moduleDirs = ([] as string[])
5037
.concat(
5138
nuxt.options.modulesDir,

src/constants.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
export const NUXT_I18N_MODULE_ID = '@nuxtjs/i18n'
2-
export const VUE_I18N_PKG = 'vue-i18n'
3-
export const SHARED_PKG = '@intlify/shared'
4-
export const MESSAGE_COMPILER_PKG = '@intlify/message-compiler'
5-
export const CORE_PKG = '@intlify/core'
6-
export const CORE_BASE_PKG = '@intlify/core-base'
72
export const H3_PKG = '@intlify/h3'
8-
export const UTILS_PKG = '@intlify/utils'
93
export const UTILS_H3_PKG = '@intlify/utils/h3'
104
export const STRATEGY_PREFIX = 'prefix'
115
export const STRATEGY_PREFIX_EXCEPT_DEFAULT = 'prefix_except_default'

src/context.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { dirname } from 'pathe'
44
import { hash } from 'ohash'
55
import type { Resolver } from '@nuxt/kit'
66
import type { FileMeta, LocaleInfo, LocaleObject, NuxtI18nOptions } from './types'
7+
import type { Nuxt } from 'nuxt/schema'
78

89
export interface I18nNuxtContext {
910
resolver: Resolver
@@ -13,6 +14,7 @@ export interface I18nNuxtContext {
1314
localeCodes: string[]
1415
localeInfo: LocaleInfo[]
1516
vueI18nConfigPaths: FileMeta[]
17+
vueI18nRuntimeOnly: boolean
1618
distDir: string
1719
runtimeDir: string
1820
fullStatic: boolean
@@ -23,7 +25,7 @@ const resolver = createResolver(import.meta.url)
2325
const distDir = dirname(fileURLToPath(import.meta.url))
2426
const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url))
2527

26-
export function createContext(userOptions: NuxtI18nOptions): I18nNuxtContext {
28+
export function createContext(userOptions: NuxtI18nOptions, nuxt: Nuxt): I18nNuxtContext {
2729
const options = userOptions as Required<NuxtI18nOptions>
2830

2931
return {
@@ -36,6 +38,7 @@ export function createContext(userOptions: NuxtI18nOptions): I18nNuxtContext {
3638
localeCodes: undefined!,
3739
normalizedLocales: undefined!,
3840
vueI18nConfigPaths: undefined!,
41+
vueI18nRuntimeOnly: !!(!nuxt.options.dev && !nuxt.options._prepare && options.bundle?.runtimeOnly),
3942
fullStatic: undefined!,
4043
deploymentHash: hash(Date.now()).slice(0, 8),
4144
}

src/module.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default defineNuxtModule<NuxtI18nOptions>({
3232
},
3333
defaults: DEFAULT_OPTIONS,
3434
async setup(i18nOptions, nuxt) {
35-
const ctx = createContext(i18nOptions)
35+
const ctx = createContext(i18nOptions, nuxt)
3636

3737
/**
3838
* prepare options
@@ -53,14 +53,22 @@ export default defineNuxtModule<NuxtI18nOptions>({
5353
* transpile @nuxtjs/i18n
5454
*/
5555
nuxt.options.build.transpile.push('@nuxtjs/i18n')
56-
nuxt.options.build.transpile.push('@nuxtjs/i18n-edge')
5756

5857
/**
59-
* optimize vue-i18n to ensure we share the same symbol
58+
* exclude ESM dependencies from optimization
59+
* @see https://github.com/nuxt/nuxt/blob/8db24c6a7fbcff7ab74b3ce1a196daece2f8c701/packages/vite/src/shared/client.ts#L9-L20
6060
*/
6161
nuxt.options.vite.optimizeDeps ||= {}
6262
nuxt.options.vite.optimizeDeps.exclude ||= []
63-
nuxt.options.vite.optimizeDeps.exclude.push('vue-i18n')
63+
nuxt.options.vite.optimizeDeps.exclude.push(
64+
'vue-i18n',
65+
'@intlify/shared',
66+
'@intlify/core',
67+
'@intlify/core-base',
68+
'@intlify/message-compiler',
69+
'@intlify/utils',
70+
'@intlify/utils/h3',
71+
)
6472

6573
/**
6674
* add plugin and templates

src/prepare/auto-imports.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { DEFINE_I18N_CONFIG_FN, DEFINE_I18N_LOCALE_FN, DEFINE_I18N_ROUTE_FN, VUE_I18N_PKG } from '../constants'
2-
import { addComponent, addImports, resolveModule, useNuxt } from '@nuxt/kit'
1+
import { DEFINE_I18N_CONFIG_FN, DEFINE_I18N_LOCALE_FN, DEFINE_I18N_ROUTE_FN } from '../constants'
2+
import { addComponent, addImports, resolveModule } from '@nuxt/kit'
33
import type { I18nNuxtContext } from '../context'
44

5-
export function prepareAutoImports({ resolver, userOptions: options, runtimeDir }: I18nNuxtContext, nuxt = useNuxt()) {
5+
export function prepareAutoImports({ resolver, runtimeDir, vueI18nRuntimeOnly }: I18nNuxtContext) {
66
addComponent({
77
name: 'NuxtLinkLocale',
88
filePath: resolver.resolve(runtimeDir, 'components/NuxtLinkLocale'),
@@ -13,7 +13,7 @@ export function prepareAutoImports({ resolver, userOptions: options, runtimeDir
1313
filePath: resolver.resolve(runtimeDir, 'components/SwitchLocalePathLink'),
1414
})
1515

16-
const vueI18nPath = `${VUE_I18N_PKG}/dist/vue-i18n${!nuxt.options.dev && !nuxt.options._prepare && options.bundle?.runtimeOnly ? '.runtime' : ''}.mjs`
16+
const vueI18nPath = `vue-i18n/dist/vue-i18n${vueI18nRuntimeOnly ? '.runtime' : ''}`
1717
const composablesIndex = resolver.resolve(runtimeDir, 'composables/index')
1818
addImports([
1919
{ name: 'useI18n', from: resolveModule(vueI18nPath) },

0 commit comments

Comments
 (0)