mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-29 09:02:03 +00:00
refactor: move composable-keys
plugin into nuxt core (#30029)
This commit is contained in:
parent
0081cc4abb
commit
57badbe496
@ -40,6 +40,7 @@ import { initNitro } from './nitro'
|
||||
import schemaModule from './schema'
|
||||
import { RemovePluginMetadataPlugin } from './plugins/plugin-metadata'
|
||||
import { AsyncContextInjectionPlugin } from './plugins/async-context'
|
||||
import { ComposableKeysPlugin } from './plugins/composable-keys'
|
||||
import { resolveDeepImportsPlugin } from './plugins/resolve-deep-imports'
|
||||
import { prehydrateTransformPlugin } from './plugins/prehydrate'
|
||||
import { VirtualFSPlugin } from './plugins/virtual'
|
||||
@ -247,6 +248,13 @@ async function initNuxt (nuxt: Nuxt) {
|
||||
// Add plugin normalization plugin
|
||||
addBuildPlugin(RemovePluginMetadataPlugin(nuxt))
|
||||
|
||||
// Add keys for useFetch, useAsyncData, etc.
|
||||
addBuildPlugin(ComposableKeysPlugin({
|
||||
sourcemap: !!nuxt.options.sourcemap.server || !!nuxt.options.sourcemap.client,
|
||||
rootDir: nuxt.options.rootDir,
|
||||
composables: nuxt.options.optimization.keyedComposables,
|
||||
}))
|
||||
|
||||
// shared folder import protection
|
||||
const sharedDir = withTrailingSlash(resolve(nuxt.options.rootDir, nuxt.options.dir.shared))
|
||||
const relativeSharedDir = withTrailingSlash(relative(nuxt.options.rootDir, resolve(nuxt.options.rootDir, nuxt.options.dir.shared)))
|
||||
|
@ -9,7 +9,7 @@ import type { CallExpression, Pattern } from 'estree'
|
||||
import { parseQuery, parseURL } from 'ufo'
|
||||
import escapeRE from 'escape-string-regexp'
|
||||
import { findStaticImports, parseStaticImport } from 'mlly'
|
||||
import { matchWithStringOrRegex } from '../utils'
|
||||
import { matchWithStringOrRegex } from '../utils/plugins'
|
||||
|
||||
interface ComposableKeysOptions {
|
||||
sourcemap: boolean
|
||||
@ -22,7 +22,7 @@ const NUXT_LIB_RE = /node_modules\/(?:nuxt|nuxt3|nuxt-nightly)\//
|
||||
const SUPPORTED_EXT_RE = /\.(?:m?[jt]sx?|vue)/
|
||||
const SCRIPT_RE = /(?<=<script[^>]*>)[\s\S]*?(?=<\/script>)/i
|
||||
|
||||
export const composableKeysPlugin = createUnplugin((options: ComposableKeysOptions) => {
|
||||
export const ComposableKeysPlugin = (options: ComposableKeysOptions) => createUnplugin(() => {
|
||||
const composableMeta: Record<string, any> = {}
|
||||
const composableLengths = new Set<number>()
|
||||
const keyedFunctions = new Set<string>()
|
@ -54,3 +54,13 @@ export function getLoader (id: string): 'vue' | 'ts' | 'tsx' | null {
|
||||
}
|
||||
return ext.endsWith('x') ? 'tsx' : 'ts'
|
||||
}
|
||||
|
||||
export function matchWithStringOrRegex (value: string, matcher: string | RegExp) {
|
||||
if (typeof matcher === 'string') {
|
||||
return value === matcher
|
||||
} else if (matcher instanceof RegExp) {
|
||||
return matcher.test(value)
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { detectImportNames } from '../src/plugins/composable-keys'
|
||||
import { detectImportNames } from '../src/core/plugins/composable-keys'
|
||||
|
||||
describe('detectImportNames', () => {
|
||||
const keyedComposables = {
|
@ -17,16 +17,6 @@ export function hashId (id: string) {
|
||||
return '$id_' + hash(id)
|
||||
}
|
||||
|
||||
export function matchWithStringOrRegex (value: string, matcher: string | RegExp) {
|
||||
if (typeof matcher === 'string') {
|
||||
return value === matcher
|
||||
} else if (matcher instanceof RegExp) {
|
||||
return matcher.test(value)
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
/** @since 3.9.0 */
|
||||
export function toArray<T> (value: T | T[]): T[] {
|
||||
return Array.isArray(value) ? value : [value]
|
||||
|
@ -14,7 +14,6 @@ import { buildClient } from './client'
|
||||
import { buildServer } from './server'
|
||||
import { warmupViteServer } from './utils/warmup'
|
||||
import { resolveCSSOptions } from './css'
|
||||
import { composableKeysPlugin } from './plugins/composable-keys'
|
||||
import { logLevelMap } from './utils/logger'
|
||||
import { ssrStylesPlugin } from './plugins/ssr-styles'
|
||||
import { VitePublicDirsPlugin } from './plugins/public-dirs'
|
||||
@ -100,11 +99,6 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => {
|
||||
sourcemap: !!nuxt.options.sourcemap.server,
|
||||
baseURL: nuxt.options.app.baseURL,
|
||||
}),
|
||||
composableKeysPlugin.vite({
|
||||
sourcemap: !!nuxt.options.sourcemap.server || !!nuxt.options.sourcemap.client,
|
||||
rootDir: nuxt.options.rootDir,
|
||||
composables: nuxt.options.optimization.keyedComposables,
|
||||
}),
|
||||
replace({ preventAssignment: true, ...globalThisReplacements }),
|
||||
],
|
||||
server: {
|
||||
|
@ -9,7 +9,6 @@ import type { NuxtBuilder } from '@nuxt/schema'
|
||||
import { joinURL } from 'ufo'
|
||||
import { logger, useNuxt } from '@nuxt/kit'
|
||||
|
||||
import { composableKeysPlugin } from '../../vite/src/plugins/composable-keys'
|
||||
import { DynamicBasePlugin } from './plugins/dynamic-base'
|
||||
import { ChunkErrorPlugin } from './plugins/chunk'
|
||||
import { createMFS } from './utils/mfs'
|
||||
@ -42,11 +41,6 @@ export const bundle: NuxtBuilder['bundle'] = async (nuxt) => {
|
||||
if (config.name === 'client' && nuxt.options.experimental.emitRouteChunkError && nuxt.options.builder !== '@nuxt/rspack-builder') {
|
||||
config.plugins!.push(new ChunkErrorPlugin())
|
||||
}
|
||||
config.plugins!.push(composableKeysPlugin.webpack({
|
||||
sourcemap: !!nuxt.options.sourcemap[config.name as 'client' | 'server'],
|
||||
rootDir: nuxt.options.rootDir,
|
||||
composables: nuxt.options.optimization.keyedComposables,
|
||||
}))
|
||||
}
|
||||
|
||||
await nuxt.callHook(`${builder}:configResolved`, webpackConfigs)
|
||||
|
Loading…
Reference in New Issue
Block a user