diff --git a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts index d1c98348c5c453..9a350a46bee5a2 100644 --- a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts +++ b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts @@ -17,6 +17,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'es' ) expect(options).toEqual({ + charset: 'utf8', target: 'es2020', format: 'esm', keepNames: true, @@ -59,6 +60,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'es' ) expect(options).toEqual({ + charset: 'utf8', target: undefined, format: 'esm', keepNames: true, @@ -88,6 +90,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'es' ) expect(options).toEqual({ + charset: 'utf8', target: 'es2020', format: 'esm', keepNames: true, @@ -119,6 +122,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'es' ) expect(options).toEqual({ + charset: 'utf8', target: undefined, format: 'esm', keepNames: true, @@ -150,6 +154,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'cjs' ) expect(options).toEqual({ + charset: 'utf8', target: undefined, format: 'cjs', keepNames: true, @@ -180,6 +185,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'es' ) expect(options).toEqual({ + charset: 'utf8', target: undefined, format: 'esm', keepNames: true, @@ -214,6 +220,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'cjs' ) expect(options).toEqual({ + charset: 'utf8', target: undefined, format: 'cjs', keepNames: true, diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 4034dfb4d83fcc..9ee81b465b09b0 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -116,8 +116,6 @@ export type PluginOption = | PluginOption[] | Promise -type Charset = 'ascii' | 'utf8' - export interface UserConfig { /** * Project root directory. Can be an absolute path, or a path relative from @@ -154,11 +152,6 @@ export interface UserConfig { * each command, and can be overridden by the command line --mode option. */ mode?: string - /** - * Charset - * @default 'utf8' - */ - charset?: Charset /** * Define global variable replacements. * Entries will be defined on `window` during dev and replaced during build. @@ -637,7 +630,6 @@ export async function resolveConfig( resolve: resolveOptions, publicDir: resolvedPublicDir, cacheDir, - charset: config.charset ?? 'utf8', command, mode, ssr, @@ -666,6 +658,7 @@ export async function resolveConfig( ...optimizeDeps, esbuildOptions: { preserveSymlinks: resolveOptions.preserveSymlinks, + charset: optimizeDeps.esbuildOptions?.charset ?? 'utf8', ...optimizeDeps.esbuildOptions } }, diff --git a/packages/vite/src/node/plugins/esbuild.ts b/packages/vite/src/node/plugins/esbuild.ts index 7304d10bb951d9..a10ebfe6dcab1b 100644 --- a/packages/vite/src/node/plugins/esbuild.ts +++ b/packages/vite/src/node/plugins/esbuild.ts @@ -306,9 +306,10 @@ export function resolveEsbuildTranspileOptions( // https://github.com/vuejs/core/issues/2860#issuecomment-926882793 const isEsLibBuild = config.build.lib && format === 'es' const esbuildOptions = config.esbuild || {} + const options: TransformOptions = { + charset: 'utf8', ...esbuildOptions, - charset: config.charset, target: target || undefined, format: rollupToEsbuildFormatMap[format], // the final build should always support dynamic import and import.meta.