-
Notifications
You must be signed in to change notification settings - Fork 462
/
alias.ts
82 lines (70 loc) · 3.59 KB
/
alias.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import createDebug from 'debug'
import { resolvePath } from '@nuxt/kit'
import { resolveVueI18nPkgPath, pkgModulesDir, getPackageManagerType } from './dirs'
import { resolve, parse as parsePath } from 'pathe'
import { VUE_I18N_PKG, VUE_I18N_BRIDGE_PKG, VUE_ROUTER_BRIDGE_PKG, VUE_I18N_ROUTING_PKG } from './constants'
import type { Nuxt } from '@nuxt/schema'
import type { PackageManager } from './dirs'
const debug = createDebug('@nuxtjs/i18n:alias')
export async function setupAlias(nuxt: Nuxt) {
const pkgMgr = await getPackageManagerType()
debug('setupAlias: pkgMgr', pkgMgr)
// resolve vue-i18@v9
nuxt.options.alias[VUE_I18N_PKG] = await resolveVueI18nAlias(nuxt)
nuxt.options.build.transpile.push(VUE_I18N_PKG)
debug('vue-i18n alias', nuxt.options.alias[VUE_I18N_PKG])
// resolve @intlify/shared
nuxt.options.alias['@intlify/shared'] = await resolvePath('@intlify/shared')
nuxt.options.build.transpile.push('@intlify/shared')
debug('@intlify/shared alias', nuxt.options.alias['@intlify/shared'])
// resolve @intlify/vue-router-bridge
nuxt.options.alias[VUE_ROUTER_BRIDGE_PKG] = await resolveVueRouterBridgeAlias(pkgModulesDir, pkgMgr)
nuxt.options.build.transpile.push(VUE_ROUTER_BRIDGE_PKG)
debug('@intlify/vue-router-bridge alias', nuxt.options.alias[VUE_ROUTER_BRIDGE_PKG])
// resolve @intlify/vue-i18n-bridge
nuxt.options.alias[VUE_I18N_BRIDGE_PKG] = await resolveVueI18nBridgeAlias(pkgModulesDir, pkgMgr)
nuxt.options.build.transpile.push(VUE_I18N_BRIDGE_PKG)
debug('@intlify/vue-i18n-bridge alias', nuxt.options.alias[VUE_I18N_BRIDGE_PKG])
// resolve vue-i18n-routing
nuxt.options.alias[VUE_I18N_ROUTING_PKG] = await resolveVueI18nRoutingAlias(pkgModulesDir, pkgMgr)
nuxt.options.build.transpile.push(VUE_I18N_ROUTING_PKG)
debug('vue-i18n-routing alias', nuxt.options.alias[VUE_I18N_ROUTING_PKG])
}
async function resolveVueI18nAlias(nuxt: Nuxt) {
return resolve(await resolveVueI18nPkgPath(), nuxt.options.dev ? 'dist/vue-i18n.mjs' : 'dist/vue-i18n.runtime.mjs')
}
async function resolveVueI18nBridgeAlias(pkgModuleDir: string, pkgMgr: PackageManager) {
if (pkgMgr === 'npm') {
debug(
'resolveVueI18nBridgeAlias on npm',
`${VUE_I18N_ROUTING_PKG}/node_modules/${VUE_I18N_BRIDGE_PKG}/lib/index.mjs`
)
return resolve(pkgModuleDir, `${VUE_I18N_ROUTING_PKG}/node_modules/${VUE_I18N_BRIDGE_PKG}/lib/index.mjs`)
} else {
const parsed = parsePath(await resolvePath(VUE_I18N_BRIDGE_PKG))
debug(`resolveVueI18nBridgeAlias on ${pkgMgr}`, parsed)
return `${parsed.dir}/${parsed.name}.mjs`
}
}
async function resolveVueRouterBridgeAlias(pkgModuleDir: string, pkgMgr: PackageManager) {
if (pkgMgr === 'npm') {
debug('resolveVueRouterBridgeAlias on npm', `${VUE_ROUTER_BRIDGE_PKG}/lib/index.mjs`)
return resolve(pkgModuleDir, `${VUE_ROUTER_BRIDGE_PKG}/lib/index.mjs`)
} else {
const parsed = parsePath(await resolvePath(VUE_ROUTER_BRIDGE_PKG))
debug(`resolveVueRouterBridgeAlias on ${pkgMgr}`, parsed)
return `${parsed.dir}/${parsed.name}.mjs`
}
}
async function resolveVueI18nRoutingAlias(pkgModuleDir: string, pkgMgr: PackageManager) {
if (pkgMgr === 'npm') {
debug('resolveVueI18nRoutingAlias on npm', `${VUE_I18N_ROUTING_PKG}/dist/vue-i18n-routing.mjs`)
return resolve(pkgModuleDir, `${VUE_I18N_ROUTING_PKG}/dist/vue-i18n-routing.mjs`)
} else if (pkgMgr === 'pnpm' || pkgMgr === 'yarn') {
const parsed = parsePath(await resolvePath(VUE_I18N_ROUTING_PKG))
debug(`resolveVueI18nRoutingAlias on ${pkgMgr}`, parsed)
return `${parsed.dir}/dist/vue-i18n-routing.mjs`
} else {
return await resolvePath(VUE_I18N_ROUTING_PKG)
}
}