From 7d544f5a4c9c944a1f040b8222462d168a672a17 Mon Sep 17 00:00:00 2001 From: Nihal Gonsalves Date: Sat, 1 May 2021 22:44:00 +0200 Subject: [PATCH 1/2] refactor: dedupe deprecation warning code --- packages/vite/src/node/config.ts | 59 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index a0f4ee36659b83..1954ce7c9c86d6 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -402,64 +402,65 @@ export async function resolveConfig( } // TODO Deprecation warnings - remove when out of beta - if (config.build?.base) { + + const logDeprecationWarning = ( + deprecatedOption: string, + hint: string, + error?: Error + ) => { logger.warn( chalk.yellow.bold( - `(!) "build.base" config option is deprecated. ` + - `"base" is now a root-level config option.` + `(!) "${deprecatedOption}" option is deprecated. ${hint}"${ + error ? `\n${error.stack}` : '' + }` ) ) + } + + if (config.build?.base) { + logDeprecationWarning( + 'build.base', + '"base" is now a root-level config option.' + ) config.base = config.build.base } Object.defineProperty(resolvedBuildOptions, 'base', { enumerable: false, get() { - logger.warn( - chalk.yellow.bold( - `(!) "build.base" config option is deprecated. ` + - `"base" is now a root-level config option.\n` + - new Error().stack - ) + logDeprecationWarning( + 'build.base', + '"base" is now a root-level config option.', + new Error() ) return resolved.base } }) if (config.alias) { - logger.warn( - chalk.bold.yellow( - '(!) "alias" option is deprecated. Use "resolve.alias" instead.' - ) - ) + logDeprecationWarning('alias', 'Use "resolve.alias" instead.') } Object.defineProperty(resolved, 'alias', { enumerable: false, get() { - logger.warn( - chalk.yellow.bold( - `(!) "alias" config option is deprecated. Use "resolve.alias" instead.\n` + - new Error().stack - ) + logDeprecationWarning( + 'alias', + 'Use "resolve.alias" instead.', + new Error() ) return resolved.resolve.alias } }) if (config.dedupe) { - logger.warn( - chalk.bold.yellow( - '(!) "dedupe" option is deprecated. Use "resolve.dedupe" instead.' - ) - ) + logDeprecationWarning('dedupe', 'Use "resolve.dedupe" instead.') } Object.defineProperty(resolved, 'dedupe', { enumerable: false, get() { - logger.warn( - chalk.yellow.bold( - `(!) "dedupe" config option is deprecated. Use "resolve.dedupe" instead.\n` + - new Error().stack - ) + logDeprecationWarning( + 'dedupe', + 'Use "resolve.dedupe" instead.', + new Error() ) return resolved.resolve.dedupe } From c8054ea4fbe8e2913abe56248bc7dbd8b1357709 Mon Sep 17 00:00:00 2001 From: Nihal Gonsalves Date: Sat, 1 May 2021 22:52:53 +0200 Subject: [PATCH 2/2] fix: spurious quote mark --- packages/vite/src/node/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 1954ce7c9c86d6..b486429895fe6f 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -410,7 +410,7 @@ export async function resolveConfig( ) => { logger.warn( chalk.yellow.bold( - `(!) "${deprecatedOption}" option is deprecated. ${hint}"${ + `(!) "${deprecatedOption}" option is deprecated. ${hint}${ error ? `\n${error.stack}` : '' }` )