From 35a4558911f3550620579c4c1f5f84982e949074 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 23 Aug 2022 13:56:57 +0800 Subject: [PATCH 01/11] fix(nuxt)!: rename `autoImports` to `imports` --- .../3.directory-structure/5.composables.md | 2 +- docs/content/bridge/1.overview.md | 2 +- .../config-extends/base/nuxt.config.ts | 2 +- packages/kit/src/auto-import.ts | 6 +-- packages/nuxt/src/core/nuxt.ts | 4 +- packages/nuxt/src/core/templates.ts | 2 +- .../src/{auto-imports => imports}/module.ts | 47 ++++++++++++------- .../src/{auto-imports => imports}/presets.ts | 0 .../{auto-imports => imports}/transform.ts | 8 ++-- packages/nuxt/src/pages/module.ts | 4 +- packages/nuxt/test/auto-imports.test.ts | 10 ++-- packages/schema/src/config/_adhoc.ts | 4 +- packages/schema/src/types/hooks.ts | 6 +-- packages/schema/src/types/imports.ts | 2 +- 14 files changed, 57 insertions(+), 42 deletions(-) rename packages/nuxt/src/{auto-imports => imports}/module.ts (76%) rename packages/nuxt/src/{auto-imports => imports}/presets.ts (100%) rename packages/nuxt/src/{auto-imports => imports}/transform.ts (88%) diff --git a/docs/content/2.guide/3.directory-structure/5.composables.md b/docs/content/2.guide/3.directory-structure/5.composables.md index eeaa2cd0fa6..43eb781288d 100644 --- a/docs/content/2.guide/3.directory-structure/5.composables.md +++ b/docs/content/2.guide/3.directory-structure/5.composables.md @@ -98,7 +98,7 @@ export { utils } from './nested/utils.ts' ```ts [nuxt.config.ts] export default defineNuxtConfig({ - autoImports: { + imports: { dirs: [ // Scan top-level modules 'composables', diff --git a/docs/content/bridge/1.overview.md b/docs/content/bridge/1.overview.md index dc2d62e0c50..eab7c11bd35 100644 --- a/docs/content/bridge/1.overview.md +++ b/docs/content/bridge/1.overview.md @@ -278,7 +278,7 @@ export default defineNuxtConfig({ // scriptSetup: false, // Disable composables auto importing - // autoImports: false, + // imports: false, // Do not warn about module incompatibilities // constraints: false diff --git a/examples/advanced/config-extends/base/nuxt.config.ts b/examples/advanced/config-extends/base/nuxt.config.ts index 8bcb917dc5b..b52d458e0ec 100644 --- a/examples/advanced/config-extends/base/nuxt.config.ts +++ b/examples/advanced/config-extends/base/nuxt.config.ts @@ -1,7 +1,7 @@ import { defineNuxtConfig } from 'nuxt' export default defineNuxtConfig({ - autoImports: { + imports: { dirs: ['utils'] }, publicRuntimeConfig: { diff --git a/packages/kit/src/auto-import.ts b/packages/kit/src/auto-import.ts index 673774d1ef8..57a6f8b8fc5 100644 --- a/packages/kit/src/auto-import.ts +++ b/packages/kit/src/auto-import.ts @@ -5,15 +5,15 @@ import { assertNuxtCompatibility } from './compatibility' export function addAutoImport (imports: Import | Import[]) { assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('autoImports:extend', (autoImports) => { - autoImports.push(...(Array.isArray(imports) ? imports : [imports])) + useNuxt().hook('imports:extend', (imports) => { + imports.push(...(Array.isArray(imports) ? imports : [imports])) }) } export function addAutoImportDir (_autoImportDirs: string | string[]) { assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('autoImports:dirs', (autoImportDirs: string[]) => { + useNuxt().hook('imports:dirs', (autoImportDirs: string[]) => { for (const dir of (Array.isArray(_autoImportDirs) ? _autoImportDirs : [_autoImportDirs])) { autoImportDirs.push(dir) } diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index f28d634238e..2f3ba9a41ed 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -8,7 +8,7 @@ import escapeRE from 'escape-string-regexp' import pagesModule from '../pages/module' import metaModule from '../head/module' import componentsModule from '../components/module' -import autoImportsModule from '../auto-imports/module' +import importsModule from '../imports/module' /* eslint-enable */ import { distDir, pkgDir } from '../dirs' import { version } from '../../package.json' @@ -162,7 +162,7 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise { options.appDir = options.alias['#app'] = resolve(distDir, 'app') options._majorVersion = 3 options._modules.push(pagesModule, metaModule, componentsModule) - options._modules.push([autoImportsModule, { + options._modules.push([importsModule, { transform: { include: options._layers .filter(i => i.cwd && i.cwd.includes('node_modules')) diff --git a/packages/nuxt/src/core/templates.ts b/packages/nuxt/src/core/templates.ts index 15201d8e795..3fa41de712a 100644 --- a/packages/nuxt/src/core/templates.ts +++ b/packages/nuxt/src/core/templates.ts @@ -110,7 +110,7 @@ export { } } } -const adHocModules = ['router', 'pages', 'auto-imports', 'meta', 'components'] +const adHocModules = ['router', 'pages', 'imports', 'meta', 'components'] export const schemaTemplate: NuxtTemplate = { filename: 'types/schema.d.ts', getContents: ({ nuxt }) => { diff --git a/packages/nuxt/src/auto-imports/module.ts b/packages/nuxt/src/imports/module.ts similarity index 76% rename from packages/nuxt/src/auto-imports/module.ts rename to packages/nuxt/src/imports/module.ts index 394a066ed47..7fc1be6ba8c 100644 --- a/packages/nuxt/src/auto-imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -1,14 +1,15 @@ import { addVitePlugin, addWebpackPlugin, defineNuxtModule, addTemplate, resolveAlias, useNuxt, addPluginTemplate, logger } from '@nuxt/kit' import { isAbsolute, join, relative, resolve, normalize } from 'pathe' import { createUnimport, Import, scanDirExports, toImports, Unimport } from 'unimport' -import { AutoImportsOptions, ImportPresetWithDeprecation } from '@nuxt/schema' +import { ImportsOptions, ImportPresetWithDeprecation } from '@nuxt/schema' +import defu from 'defu' import { TransformPlugin } from './transform' import { defaultPresets } from './presets' -export default defineNuxtModule>({ +export default defineNuxtModule>({ meta: { - name: 'auto-imports', - configKey: 'autoImports' + name: 'imports', + configKey: 'imports' }, defaults: { presets: defaultPresets, @@ -21,13 +22,27 @@ export default defineNuxtModule>({ } }, async setup (options, nuxt) { + // TODO: remove deprecation warning + // @ts-expect-error + if (nuxt.options['auto-imports']) { + logger.warn('`auto-imports` is deprecated, use `imports` instead') + // @ts-expect-error + options = defu(nuxt.options['auto-imports'], options) + } + nuxt.hooks.deprecateHooks({ + // @ts-expect-error + 'autoImports:sources': { to: 'imports:sources' }, + 'autoImports:dirs': { to: 'imports:dirs' }, + 'autoImports:extend': { to: 'imports:extend' } + }) + // Allow modules extending sources - await nuxt.callHook('autoImports:sources', options.presets as ImportPresetWithDeprecation[]) + await nuxt.callHook('imports:sources', options.presets as ImportPresetWithDeprecation[]) options.presets?.forEach((i: ImportPresetWithDeprecation | string) => { if (typeof i !== 'string' && i.names && !i.imports) { i.imports = i.names - logger.warn('auto-imports: presets.names is deprecated, use presets.imports instead') + logger.warn('imports: presets.names is deprecated, use presets.imports instead') } }) @@ -48,7 +63,7 @@ export default defineNuxtModule>({ let composablesDirs: string[] = [] for (const layer of nuxt.options._layers) { composablesDirs.push(resolve(layer.config.srcDir, 'composables')) - for (const dir of (layer.config.autoImports?.dirs ?? [])) { + for (const dir of (layer.config.imports?.dirs ?? [])) { if (!dir) { continue } @@ -56,13 +71,13 @@ export default defineNuxtModule>({ } } - await nuxt.callHook('autoImports:dirs', composablesDirs) + await nuxt.callHook('imports:dirs', composablesDirs) composablesDirs = composablesDirs.map(dir => normalize(dir)) // Support for importing from '#imports' addTemplate({ filename: 'imports.mjs', - getContents: () => ctx.toExports() + '\nif (process.dev) { console.warn("[nuxt] `#imports` should be transformed with real imports. There seems to be something wrong with the auto-imports plugin.") }' + getContents: () => ctx.toExports() + '\nif (process.dev) { console.warn("[nuxt] `#imports` should be transformed with real imports. There seems to be something wrong with the imports plugin.") }' }) nuxt.options.alias['#imports'] = join(nuxt.options.buildDir, 'imports') @@ -71,7 +86,7 @@ export default defineNuxtModule>({ if (nuxt.options.dev && options.global) { // Add all imports to globalThis in development mode addPluginTemplate({ - filename: 'auto-imports.mjs', + filename: 'imports.mjs', getContents: () => { const imports = ctx.getImports() const importStatement = toImports(imports) @@ -85,24 +100,24 @@ export default defineNuxtModule>({ addWebpackPlugin(TransformPlugin.webpack({ ctx, options, sourcemap: nuxt.options.sourcemap })) } - const regenerateAutoImports = async () => { + const regenerateImports = async () => { ctx.clearDynamicImports() await ctx.modifyDynamicImports(async (imports) => { // Scan composables/ imports.push(...await scanDirExports(composablesDirs)) // Modules extending - await nuxt.callHook('autoImports:extend', imports) + await nuxt.callHook('imports:extend', imports) }) } - await regenerateAutoImports() + await regenerateImports() // Generate types addDeclarationTemplates(ctx) // Add generated types to `nuxt.d.ts` nuxt.hook('prepare:types', ({ references }) => { - references.push({ path: resolve(nuxt.options.buildDir, 'types/auto-imports.d.ts') }) + references.push({ path: resolve(nuxt.options.buildDir, 'types/imports.d.ts') }) references.push({ path: resolve(nuxt.options.buildDir, 'imports.d.ts') }) }) @@ -115,7 +130,7 @@ export default defineNuxtModule>({ }) nuxt.hook('builder:generateApp', async () => { - await regenerateAutoImports() + await regenerateImports() }) } }) @@ -147,7 +162,7 @@ function addDeclarationTemplates (ctx: Unimport) { }) addTemplate({ - filename: 'types/auto-imports.d.ts', + filename: 'types/imports.d.ts', getContents: () => '// Generated by auto imports\n' + ctx.generateTypeDeclarations({ resolvePath: r }) }) } diff --git a/packages/nuxt/src/auto-imports/presets.ts b/packages/nuxt/src/imports/presets.ts similarity index 100% rename from packages/nuxt/src/auto-imports/presets.ts rename to packages/nuxt/src/imports/presets.ts diff --git a/packages/nuxt/src/auto-imports/transform.ts b/packages/nuxt/src/imports/transform.ts similarity index 88% rename from packages/nuxt/src/auto-imports/transform.ts rename to packages/nuxt/src/imports/transform.ts index b7b1195f85d..27c4ed552a3 100644 --- a/packages/nuxt/src/auto-imports/transform.ts +++ b/packages/nuxt/src/imports/transform.ts @@ -2,12 +2,12 @@ import { pathToFileURL } from 'node:url' import { createUnplugin } from 'unplugin' import { parseQuery, parseURL } from 'ufo' import { Unimport } from 'unimport' -import { AutoImportsOptions } from '@nuxt/schema' +import { ImportsOptions } from '@nuxt/schema' import { normalize } from 'pathe' -export const TransformPlugin = createUnplugin(({ ctx, options, sourcemap }: { ctx: Unimport, options: Partial, sourcemap?: boolean }) => { +export const TransformPlugin = createUnplugin(({ ctx, options, sourcemap }: { ctx: Unimport, options: Partial, sourcemap?: boolean }) => { return { - name: 'nuxt:auto-imports-transform', + name: 'nuxt:imports-transform', enforce: 'post', transformInclude (id) { const { pathname, search } = parseURL(decodeURIComponent(pathToFileURL(id).href)) @@ -39,7 +39,7 @@ export const TransformPlugin = createUnplugin(({ ctx, options, sourcemap }: { ct async transform (code, id) { id = normalize(id) const isNodeModule = id.match(/[\\/]node_modules[\\/]/) && !options.transform?.include?.some(pattern => id.match(pattern)) - // For modules in node_modules, we only transform `#imports` but not doing auto-imports + // For modules in node_modules, we only transform `#imports` but not doing imports if (isNodeModule && !code.match(/(['"])#imports\1/)) { return } diff --git a/packages/nuxt/src/pages/module.ts b/packages/nuxt/src/pages/module.ts index 3af9e18062a..6f080c1c312 100644 --- a/packages/nuxt/src/pages/module.ts +++ b/packages/nuxt/src/pages/module.ts @@ -78,8 +78,8 @@ export default defineNuxtModule({ }) } - nuxt.hook('autoImports:extend', (autoImports) => { - autoImports.push( + nuxt.hook('imports:extend', (imports) => { + imports.push( { name: 'definePageMeta', as: 'definePageMeta', from: resolve(runtimeDir, 'composables') }, { name: 'useLink', as: 'useLink', from: 'vue-router' } ) diff --git a/packages/nuxt/test/auto-imports.test.ts b/packages/nuxt/test/auto-imports.test.ts index ec9df68047a..dd30e217856 100644 --- a/packages/nuxt/test/auto-imports.test.ts +++ b/packages/nuxt/test/auto-imports.test.ts @@ -4,10 +4,10 @@ import { join } from 'pathe' import { createCommonJS, findExports } from 'mlly' import * as VueFunctions from 'vue' import { createUnimport, Import } from 'unimport' -import { TransformPlugin } from '../src/auto-imports/transform' -import { defaultPresets } from '../src/auto-imports/presets' +import { TransformPlugin } from '../src/imports/transform' +import { defaultPresets } from '../src/imports/presets' -describe('auto-imports:transform', () => { +describe('imports:transform', () => { const imports: Import[] = [ { name: 'ref', as: 'ref', from: 'vue' }, { name: 'computed', as: 'computed', from: 'bar' }, @@ -54,7 +54,7 @@ describe('auto-imports:transform', () => { const excludedNuxtHelpers = ['useHydration'] -describe('auto-imports:nuxt', () => { +describe('imports:nuxt', () => { try { const { __dirname } = createCommonJS(import.meta.url) const entrypointContents = readFileSync(join(__dirname, '../src/app/composables/index.ts'), 'utf8') @@ -170,7 +170,7 @@ const excludedVueHelpers = [ 'compile' ] -describe('auto-imports:vue', () => { +describe('imports:vue', () => { for (const name of Object.keys(VueFunctions)) { if (excludedVueHelpers.includes(name)) { continue diff --git a/packages/schema/src/config/_adhoc.ts b/packages/schema/src/config/_adhoc.ts index b8e1243ba6f..b57c51c942e 100644 --- a/packages/schema/src/config/_adhoc.ts +++ b/packages/schema/src/config/_adhoc.ts @@ -28,10 +28,10 @@ export default { * Configure how Nuxt auto-imports composables into your application. * * @see [Nuxt 3 documentation](https://v3.nuxtjs.org/guide/directory-structure/composables) - * @type {typeof import('../src/types/imports').AutoImportsOptions} + * @type {typeof import('../src/types/imports').ImportsOptions} * @version 3 */ - autoImports: { + imports: { global: false, dirs: [] }, diff --git a/packages/schema/src/types/hooks.ts b/packages/schema/src/types/hooks.ts index c5818e453ee..b38709935e8 100644 --- a/packages/schema/src/types/hooks.ts +++ b/packages/schema/src/types/hooks.ts @@ -76,9 +76,9 @@ export interface NuxtHooks { 'build:manifest': (manifest: Manifest) => HookResult // Auto imports - 'autoImports:sources': (presets: ImportPresetWithDeprecation[]) => HookResult - 'autoImports:extend': (imports: Import[]) => HookResult - 'autoImports:dirs': (dirs: string[]) => HookResult + 'imports:sources': (presets: ImportPresetWithDeprecation[]) => HookResult + 'imports:extend': (imports: Import[]) => HookResult + 'imports:dirs': (dirs: string[]) => HookResult // Components 'components:dirs': (dirs: ComponentsOptions['dirs']) => HookResult diff --git a/packages/schema/src/types/imports.ts b/packages/schema/src/types/imports.ts index 45d6f22a5d8..cf416685a48 100644 --- a/packages/schema/src/types/imports.ts +++ b/packages/schema/src/types/imports.ts @@ -1,6 +1,6 @@ import { UnimportOptions } from 'unimport' -export interface AutoImportsOptions extends UnimportOptions { +export interface ImportsOptions extends UnimportOptions { dirs?: string[] global?: boolean transform?: { From 27ed1e498923a3fcf9c227eaffc89ba3fe48f0da Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 23 Aug 2022 14:11:22 +0800 Subject: [PATCH 02/11] chore: update --- packages/kit/src/auto-import.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/kit/src/auto-import.ts b/packages/kit/src/auto-import.ts index 57a6f8b8fc5..7c3bbe80225 100644 --- a/packages/kit/src/auto-import.ts +++ b/packages/kit/src/auto-import.ts @@ -5,17 +5,17 @@ import { assertNuxtCompatibility } from './compatibility' export function addAutoImport (imports: Import | Import[]) { assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('imports:extend', (imports) => { - imports.push(...(Array.isArray(imports) ? imports : [imports])) + useNuxt().hook('imports:extend', (extend) => { + extend.push(...(Array.isArray(imports) ? imports : [imports])) }) } -export function addAutoImportDir (_autoImportDirs: string | string[]) { +export function addAutoImportDir (dirs: string | string[]) { assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('imports:dirs', (autoImportDirs: string[]) => { - for (const dir of (Array.isArray(_autoImportDirs) ? _autoImportDirs : [_autoImportDirs])) { - autoImportDirs.push(dir) + useNuxt().hook('imports:dirs', (extend: string[]) => { + for (const dir of (Array.isArray(dirs) ? dirs : [dirs])) { + extend.push(dir) } }) } From 1a688529141e00d106c2a32362880b75ae10adde Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 23 Aug 2022 14:12:16 +0800 Subject: [PATCH 03/11] chore: update comments --- packages/nuxt/src/imports/module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index 7fc1be6ba8c..3af1e17b561 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -23,10 +23,10 @@ export default defineNuxtModule>({ }, async setup (options, nuxt) { // TODO: remove deprecation warning - // @ts-expect-error + // @ts-ignore if (nuxt.options['auto-imports']) { logger.warn('`auto-imports` is deprecated, use `imports` instead') - // @ts-expect-error + // @ts-ignore options = defu(nuxt.options['auto-imports'], options) } nuxt.hooks.deprecateHooks({ From 9c5b0343998334e135ee18e78df4266d5cd24d72 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 23 Aug 2022 21:30:42 +0800 Subject: [PATCH 04/11] chore: move deprecate hooks --- packages/nuxt/src/core/nuxt.ts | 8 ++++++++ packages/nuxt/src/imports/module.ts | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index 2f3ba9a41ed..0f1cd61a61a 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -21,6 +21,14 @@ import { initNitro } from './nitro' export function createNuxt (options: NuxtOptions): Nuxt { const hooks = createHooks() + // TODO: remove deprecated hooks in stable + hooks.deprecateHooks({ + // @ts-expect-error + 'autoImports:sources': { to: 'imports:sources' }, + 'autoImports:dirs': { to: 'imports:dirs' }, + 'autoImports:extend': { to: 'imports:extend' } + }) + const nuxt: Nuxt = { _version: version, options, diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index 3af1e17b561..39fd7262127 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -29,12 +29,6 @@ export default defineNuxtModule>({ // @ts-ignore options = defu(nuxt.options['auto-imports'], options) } - nuxt.hooks.deprecateHooks({ - // @ts-expect-error - 'autoImports:sources': { to: 'imports:sources' }, - 'autoImports:dirs': { to: 'imports:dirs' }, - 'autoImports:extend': { to: 'imports:extend' } - }) // Allow modules extending sources await nuxt.callHook('imports:sources', options.presets as ImportPresetWithDeprecation[]) From 15c80aab823eff5a93f2377721dca4e87a593666 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:00:32 +0200 Subject: [PATCH 05/11] Revert "chore: move deprecate hooks" This reverts commit 9c5b0343998334e135ee18e78df4266d5cd24d72. --- packages/nuxt/src/core/nuxt.ts | 8 -------- packages/nuxt/src/imports/module.ts | 6 ++++++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts index 0f1cd61a61a..2f3ba9a41ed 100644 --- a/packages/nuxt/src/core/nuxt.ts +++ b/packages/nuxt/src/core/nuxt.ts @@ -21,14 +21,6 @@ import { initNitro } from './nitro' export function createNuxt (options: NuxtOptions): Nuxt { const hooks = createHooks() - // TODO: remove deprecated hooks in stable - hooks.deprecateHooks({ - // @ts-expect-error - 'autoImports:sources': { to: 'imports:sources' }, - 'autoImports:dirs': { to: 'imports:dirs' }, - 'autoImports:extend': { to: 'imports:extend' } - }) - const nuxt: Nuxt = { _version: version, options, diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index 39fd7262127..3af1e17b561 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -29,6 +29,12 @@ export default defineNuxtModule>({ // @ts-ignore options = defu(nuxt.options['auto-imports'], options) } + nuxt.hooks.deprecateHooks({ + // @ts-expect-error + 'autoImports:sources': { to: 'imports:sources' }, + 'autoImports:dirs': { to: 'imports:dirs' }, + 'autoImports:extend': { to: 'imports:extend' } + }) // Allow modules extending sources await nuxt.callHook('imports:sources', options.presets as ImportPresetWithDeprecation[]) From dfa51f9394585c329a9e62166912b9722b055636 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:01:07 +0200 Subject: [PATCH 06/11] update hookable --- packages/nuxt/package.json | 2 +- yarn.lock | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 072d682ae22..8728eac48e3 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -48,7 +48,7 @@ "globby": "^13.1.2", "h3": "^0.7.15", "hash-sum": "^2.0.0", - "hookable": "^5.1.1", + "hookable": "^5.1.2", "knitwork": "^0.1.2", "magic-string": "^0.26.2", "mlly": "^0.5.14", diff --git a/yarn.lock b/yarn.lock index 1a4c2db7486..d565645fa0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7849,6 +7849,13 @@ __metadata: languageName: node linkType: hard +"hookable@npm:^5.1.2": + version: 5.1.2 + resolution: "hookable@npm:5.1.2" + checksum: 1b3fb622a26d34c9befe8991cf9ffcb575334ef66e151291bc4b3161e1a609365983d258020571bce4b52226d9b5880150d27ba9f4e4029734e5cd37ac31aa39 + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -10266,7 +10273,7 @@ __metadata: globby: ^13.1.2 h3: ^0.7.15 hash-sum: ^2.0.0 - hookable: ^5.1.1 + hookable: ^5.1.2 knitwork: ^0.1.2 magic-string: ^0.26.2 mlly: ^0.5.14 From 8f6d0a702e3b5d2fcf2cc33a408dfc8460815eb7 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:04:15 +0200 Subject: [PATCH 07/11] mark old hooks as deprecated --- packages/schema/src/types/hooks.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/schema/src/types/hooks.ts b/packages/schema/src/types/hooks.ts index b38709935e8..42de71a58b1 100644 --- a/packages/schema/src/types/hooks.ts +++ b/packages/schema/src/types/hooks.ts @@ -80,6 +80,13 @@ export interface NuxtHooks { 'imports:extend': (imports: Import[]) => HookResult 'imports:dirs': (dirs: string[]) => HookResult + /** @deprecated Please use `imports:sources` hook */ + 'autoImports:sources': (presets: ImportPresetWithDeprecation[]) => HookResult + /** @deprecated Please use `imports:extend` hook */ + 'autoImports:extend': (imports: Import[]) => HookResult + /** @deprecated Please use `imports:dirs` hook */ + 'autoImports:dirs': (dirs: string[]) => HookResult + // Components 'components:dirs': (dirs: ComponentsOptions['dirs']) => HookResult 'components:extend': (components: Component[]) => HookResult From 0160e7fdc0c5838adf4aa1ed565325d1389973f0 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:10:18 +0200 Subject: [PATCH 08/11] refactor: preserve arg names --- packages/kit/src/auto-import.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/kit/src/auto-import.ts b/packages/kit/src/auto-import.ts index 7c3bbe80225..58a2a8d56d0 100644 --- a/packages/kit/src/auto-import.ts +++ b/packages/kit/src/auto-import.ts @@ -5,17 +5,17 @@ import { assertNuxtCompatibility } from './compatibility' export function addAutoImport (imports: Import | Import[]) { assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('imports:extend', (extend) => { - extend.push(...(Array.isArray(imports) ? imports : [imports])) + useNuxt().hook('imports:extend', (_imports) => { + _imports.push(...(Array.isArray(imports) ? imports : [imports])) }) } export function addAutoImportDir (dirs: string | string[]) { assertNuxtCompatibility({ bridge: true }) - useNuxt().hook('imports:dirs', (extend: string[]) => { + useNuxt().hook('imports:dirs', (_dirs: string[]) => { for (const dir of (Array.isArray(dirs) ? dirs : [dirs])) { - extend.push(dir) + _dirs.push(dir) } }) } From 3f484ec585bbb1355b6eba281b6d6103963ca625 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:10:31 +0200 Subject: [PATCH 09/11] keep deprecated schema for `autoImports` config --- packages/schema/src/config/_adhoc.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/schema/src/config/_adhoc.ts b/packages/schema/src/config/_adhoc.ts index b57c51c942e..5b455118869 100644 --- a/packages/schema/src/config/_adhoc.ts +++ b/packages/schema/src/config/_adhoc.ts @@ -24,6 +24,11 @@ export default { } }, + /** @deprecated Please use `imports` config. */ + autoImports: { + dirs: [] + }, + /** * Configure how Nuxt auto-imports composables into your application. * From 04625adac20a36f9ca14709e90398eb9b229388d Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:12:58 +0200 Subject: [PATCH 10/11] fix ts issue /cc @danielroe maybe wrong in hookable types? --- packages/nuxt/src/imports/module.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index 3af1e17b561..d1a4b0c1219 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -29,8 +29,9 @@ export default defineNuxtModule>({ // @ts-ignore options = defu(nuxt.options['auto-imports'], options) } + + // @ts-expect-error nuxt.hooks.deprecateHooks({ - // @ts-expect-error 'autoImports:sources': { to: 'imports:sources' }, 'autoImports:dirs': { to: 'imports:dirs' }, 'autoImports:extend': { to: 'imports:extend' } From 717541c2f1a32a6a59cb97fd9dc38d3d0af80c96 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 23 Aug 2022 16:18:54 +0200 Subject: [PATCH 11/11] fix config deprecation :) --- packages/nuxt/src/imports/module.ts | 6 +++--- packages/schema/src/config/_adhoc.ts | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index d1a4b0c1219..2200e0bb328 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -24,10 +24,10 @@ export default defineNuxtModule>({ async setup (options, nuxt) { // TODO: remove deprecation warning // @ts-ignore - if (nuxt.options['auto-imports']) { - logger.warn('`auto-imports` is deprecated, use `imports` instead') + if (nuxt.options.autoImports) { + logger.warn('`autoImports` config is deprecated, use `imports` instead.') // @ts-ignore - options = defu(nuxt.options['auto-imports'], options) + options = defu(nuxt.options.autoImports, options) } // @ts-expect-error diff --git a/packages/schema/src/config/_adhoc.ts b/packages/schema/src/config/_adhoc.ts index 5b455118869..af4e4707eab 100644 --- a/packages/schema/src/config/_adhoc.ts +++ b/packages/schema/src/config/_adhoc.ts @@ -25,9 +25,7 @@ export default { }, /** @deprecated Please use `imports` config. */ - autoImports: { - dirs: [] - }, + autoImports: null, /** * Configure how Nuxt auto-imports composables into your application.