fix(kit): don't add local ~/modules dirs to modulesDir (#24457)

This commit is contained in:
Bobbie Goede 2023-12-20 15:42:42 +01:00 committed by GitHub
parent 22ce98d61d
commit 8917e5f564
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
import { existsSync, promises as fsp, lstatSync } from 'node:fs'
import type { ModuleMeta, Nuxt, NuxtModule } from '@nuxt/schema'
import { dirname, isAbsolute, join } from 'pathe'
import { dirname, isAbsolute, join, resolve } from 'pathe'
import { defu } from 'defu'
import { isNuxt2 } from '../compatibility'
import { useNuxt } from '../context'
@ -9,10 +9,20 @@ import { importModule } from '../internal/esm'
import { resolveAlias, resolvePath } from '../resolve'
import { logger } from '../logger'
const NODE_MODULES_RE = /[/\\]node_modules[/\\]/
/** Installs a module on a Nuxt instance. */
export async function installModule (moduleToInstall: string | NuxtModule, inlineOptions?: any, nuxt: Nuxt = useNuxt()) {
const { nuxtModule, buildTimeModuleMeta } = await loadNuxtModuleInstance(moduleToInstall, nuxt)
const localLayerModuleDirs = new Set<string>()
for (const l of nuxt.options._layers) {
const srcDir = l.config.srcDir || l.cwd
if (!NODE_MODULES_RE.test(srcDir)) {
localLayerModuleDirs.add(resolve(srcDir, l.config?.dir?.modules || 'modules'))
}
}
// Call module
const res = (
isNuxt2()
@ -27,8 +37,8 @@ export async function installModule (moduleToInstall: string | NuxtModule, inlin
if (typeof moduleToInstall === 'string') {
nuxt.options.build.transpile.push(normalizeModuleTranspilePath(moduleToInstall))
const directory = getDirectory(moduleToInstall)
if (directory !== moduleToInstall) {
nuxt.options.modulesDir.push(getDirectory(moduleToInstall))
if (directory !== moduleToInstall && !localLayerModuleDirs.has(directory)) {
nuxt.options.modulesDir.push(directory)
}
}