diff --git a/.changeset/cuddly-bars-clap.md b/.changeset/cuddly-bars-clap.md new file mode 100644 index 000000000..95441ae29 --- /dev/null +++ b/.changeset/cuddly-bars-clap.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/vite-plugin-svelte': patch +--- + +reduce deprecation logging to info and allow disabling it with a flag diff --git a/packages/vite-plugin-svelte/src/public.d.ts b/packages/vite-plugin-svelte/src/public.d.ts index 3ac18b8ce..b218184cf 100644 --- a/packages/vite-plugin-svelte/src/public.d.ts +++ b/packages/vite-plugin-svelte/src/public.d.ts @@ -173,6 +173,13 @@ interface ExperimentalOptions { */ disableSvelteResolveWarnings?: boolean; + /** + * disable api.sveltePreprocess deprecation warnings + * + * @default false + */ + disableApiSveltePreprocessWarnings?: boolean; + compileModule?: CompileModuleOptions; } diff --git a/packages/vite-plugin-svelte/src/utils/constants.js b/packages/vite-plugin-svelte/src/utils/constants.js index 449a05246..eb53a7106 100644 --- a/packages/vite-plugin-svelte/src/utils/constants.js +++ b/packages/vite-plugin-svelte/src/utils/constants.js @@ -26,6 +26,9 @@ export const SVELTE_EXPORT_CONDITIONS = ['svelte']; export const FAQ_LINK_MISSING_EXPORTS_CONDITION = 'https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md#missing-exports-condition'; +export const LINK_TRANSFORM_WITH_PLUGIN = + 'https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/advanced-usage.md#transform-svelte-files-with-vite-plugins'; + export const DEFAULT_SVELTE_EXT = ['.svelte']; export const DEFAULT_SVELTE_MODULE_INFIX = ['.svelte.']; export const DEFAULT_SVELTE_MODULE_EXT = ['.js', '.ts']; diff --git a/packages/vite-plugin-svelte/src/utils/options.js b/packages/vite-plugin-svelte/src/utils/options.js index 39a4a6bc0..8150b1312 100644 --- a/packages/vite-plugin-svelte/src/utils/options.js +++ b/packages/vite-plugin-svelte/src/utils/options.js @@ -461,11 +461,12 @@ async function buildExtraConfigForDependencies(options, config) { } }); if ( + !options.isBuild && !options.experimental?.disableSvelteResolveWarnings && packagesWithoutSvelteExportsCondition?.size > 0 ) { - log.warn( - `WARNING: The following packages have a svelte field in their package.json but no exports condition for svelte.\n\n${[ + log.info.once( + `The following packages have a svelte field in their package.json but no exports condition for svelte.\n\n${[ ...packagesWithoutSvelteExportsCondition ].join('\n')}\n\nPlease see ${FAQ_LINK_MISSING_EXPORTS_CONDITION} for details.` ); diff --git a/packages/vite-plugin-svelte/src/utils/preprocess.js b/packages/vite-plugin-svelte/src/utils/preprocess.js index 3832ec85a..84ddd885e 100644 --- a/packages/vite-plugin-svelte/src/utils/preprocess.js +++ b/packages/vite-plugin-svelte/src/utils/preprocess.js @@ -1,4 +1,5 @@ import { log } from './log.js'; +import { LINK_TRANSFORM_WITH_PLUGIN } from './constants.js'; /** * @param {import('../types/options.d.ts').ResolvedOptions} options @@ -14,17 +15,24 @@ function buildExtraPreprocessors(options, config) { /** @type {import('svelte/compiler').PreprocessorGroup[]} */ const appendPreprocessors = []; - const pluginsWithPreprocessorsDeprecated = config.plugins.filter((p) => p.api?.sveltePreprocess); - if (pluginsWithPreprocessorsDeprecated.length > 0) { - log.warn( - `The following plugins use the deprecated 'plugin.api.sveltePreprocess' field. Please contact their maintainers and ask them to use a vite plugin transform instead: ${pluginsWithPreprocessorsDeprecated + /** @type {import('vite').Plugin[]} */ + const pluginsWithPreprocessors = config.plugins.filter((p) => p?.api?.sveltePreprocess); + + if ( + !options.isBuild && + !options.experimental?.disableApiSveltePreprocessWarnings && + pluginsWithPreprocessors.length > 0 + ) { + log.info.once( + `The following plugins use the deprecated 'plugin.api.sveltePreprocess' field: ${pluginsWithPreprocessors .map((p) => p.name) - .join(', ')}` + .join(', ')} + Please contact their maintainers and ask them to use a vite plugin transform instead. + See ${LINK_TRANSFORM_WITH_PLUGIN} for more information. + `.replace(/\t+/g, '\t') ); } /** @type {import('vite').Plugin[]} */ - const pluginsWithPreprocessors = config.plugins.filter((p) => p?.api?.sveltePreprocess); - /** @type {import('vite').Plugin[]} */ const ignored = []; /** @type {import('vite').Plugin[]} */ const included = []; diff --git a/packages/vite-plugin-svelte/types/index.d.ts b/packages/vite-plugin-svelte/types/index.d.ts index d19e12fc7..8eb756c9d 100644 --- a/packages/vite-plugin-svelte/types/index.d.ts +++ b/packages/vite-plugin-svelte/types/index.d.ts @@ -173,6 +173,13 @@ declare module '@sveltejs/vite-plugin-svelte' { */ disableSvelteResolveWarnings?: boolean; + /** + * disable api.sveltePreprocess deprecation warnings + * + * @default false + */ + disableApiSveltePreprocessWarnings?: boolean; + compileModule?: CompileModuleOptions; } diff --git a/packages/vite-plugin-svelte/types/index.d.ts.map b/packages/vite-plugin-svelte/types/index.d.ts.map index 72181787a..466d273b9 100644 --- a/packages/vite-plugin-svelte/types/index.d.ts.map +++ b/packages/vite-plugin-svelte/types/index.d.ts.map @@ -26,6 +26,6 @@ null, null ], - "mappings": ";;;;aAIYA,OAAOA;;WAETC,mBAAmBA;;;;;;;;;;;kBAWZC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgGbC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiDnBC,mBAAmBA;;;;;;;;;;;;;;;;WAgBnBC,oBAAoBA;;;;;;;;;;;;;;;MAezBC,SAASA;;kBAEGC,qBAAqBA;;;;;;;;;;;;;;;;;;iBChLtBC,MAAMA;iBCMNC,cAAcA;iBCFRC,gBAAgBA", + "mappings": ";;;;aAIYA,OAAOA;;WAETC,mBAAmBA;;;;;;;;;;;kBAWZC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgGbC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiDnBC,mBAAmBA;;;;;;;;;;;;;;;;;;;;;;;WAuBnBC,oBAAoBA;;;;;;;;;;;;;;;MAezBC,SAASA;;kBAEGC,qBAAqBA;;;;;;;;;;;;;;;;;;iBCvLtBC,MAAMA;iBCMNC,cAAcA;iBCFRC,gBAAgBA", "ignoreList": [] } \ No newline at end of file