From e57d74e24946faa61784726c695b1f734b116230 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Thu, 25 Aug 2022 03:51:02 +0800 Subject: [PATCH] refactor!: rename options `autoImport` to `imports` (#433) --- docs/content/3.config/index.md | 2 +- src/nitro.ts | 4 ++-- src/options.ts | 28 +++++++++++++--------------- src/rollup/config.ts | 4 ++-- src/types/nitro.ts | 4 ++++ test/fixture/nitro.config.ts | 2 +- 6 files changed, 23 insertions(+), 21 deletions(-) diff --git a/docs/content/3.config/index.md b/docs/content/3.config/index.md index 895ed7fff6..e01a36f6f2 100644 --- a/docs/content/3.config/index.md +++ b/docs/content/3.config/index.md @@ -95,7 +95,7 @@ Dev server options. You can use `watch` to make the dev server reload if any fil Watch options for development mode. See [chokidar](https://github.com/paulmillr/chokidar) for more information. -## `autoImport` +## `imports` Auto import options. See [unjs/unimport](https://github.com/unjs/unimport) for more information. diff --git a/src/nitro.ts b/src/nitro.ts index 59001f7a68..87c36c43a0 100644 --- a/src/nitro.ts +++ b/src/nitro.ts @@ -65,8 +65,8 @@ export async function createNitro (config: NitroConfig = {}): Promise { } } - if (nitro.options.autoImport) { - nitro.unimport = createUnimport(nitro.options.autoImport) + if (nitro.options.imports) { + nitro.unimport = createUnimport(nitro.options.imports) // Support for importing from '#imports' nitro.options.virtual['#imports'] = () => nitro.unimport.toExports() // Backward compatibility diff --git a/src/options.ts b/src/options.ts index f9f1094948..0dccca2843 100644 --- a/src/options.ts +++ b/src/options.ts @@ -36,7 +36,7 @@ const NitroDefaults: NitroConfig = { publicAssets: [], serverAssets: [], plugins: [], - autoImport: { + imports: { exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/], presets: nitroImports }, @@ -152,24 +152,22 @@ export async function loadOptions (userConfig: NitroConfig = {}): Promise i.includes('node_modules')) - // .map(i => new RegExp(`(^|\\/)${escapeRE(i.split('node_modules/').pop())}(\\/|$)(?!node_modules\\/)`)) - // ] - - if (options.autoImport && Array.isArray(options.autoImport.exclude)) { - options.autoImport.exclude.push(options.buildDir) + // Backward compatibility for options.autoImports + // TODO: Remove in major release + if (options.autoImport === false) { + options.imports = false + } else if (options.imports !== false) { + options.imports = options.autoImport = defu(options.imports, options.autoImport) + } + + if (options.imports && Array.isArray(options.imports.exclude)) { + options.imports.exclude.push(options.buildDir) } // Add h3 auto imports preset - if (options.autoImport) { + if (options.imports) { const h3Exports = await resolveModuleExportNames('h3', { url: import.meta.url }) - options.autoImport.presets.push({ + options.imports.presets.push({ from: 'h3', imports: h3Exports.filter(n => !n.match(/^[A-Z]/) && n !== 'use') }) diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 4b7b2c13ee..cf28e43fba 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -121,8 +121,8 @@ export const getRollupConfig = (nitro: Nitro) => { rollupConfig.plugins.push(timing()) } - if (nitro.options.autoImport) { - rollupConfig.plugins.push(unimportPlugin.rollup(nitro.options.autoImport)) + if (nitro.options.imports) { + rollupConfig.plugins.push(unimportPlugin.rollup(nitro.options.imports)) } // Raw asset loader diff --git a/src/types/nitro.ts b/src/types/nitro.ts index 7e78e2dc06..90efb89522 100644 --- a/src/types/nitro.ts +++ b/src/types/nitro.ts @@ -126,7 +126,11 @@ export interface NitroOptions { } serverAssets: ServerAssetDir[] publicAssets: PublicAssetDir[] + /** + * @deprecated Please use `imports` option + */ autoImport: UnimportPluginOptions | false + imports: UnimportPluginOptions | false plugins: string[] virtual: Record string | Promise)> diff --git a/test/fixture/nitro.config.ts b/test/fixture/nitro.config.ts index f4538c62c5..e715b0ad06 100644 --- a/test/fixture/nitro.config.ts +++ b/test/fixture/nitro.config.ts @@ -1,7 +1,7 @@ import { defineNitroConfig } from '../../src' export default defineNitroConfig({ - autoImport: { + imports: { presets: [ { // TODO: move this to built-in preset