From 689e49886698ca75697fd46504b496a6c64a3541 Mon Sep 17 00:00:00 2001 From: Azat S Date: Wed, 2 Nov 2022 04:58:39 +0300 Subject: [PATCH 1/4] fix: add charset to esbuild build options --- packages/vite/src/node/__tests__/plugins/esbuild.spec.ts | 2 ++ packages/vite/src/node/plugins/esbuild.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts index d1c98348c5c453..b405c85e48f48b 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, @@ -150,6 +151,7 @@ describe('resolveEsbuildTranspileOptions', () => { 'cjs' ) expect(options).toEqual({ + charset: 'utf8', target: undefined, format: 'cjs', keepNames: true, diff --git a/packages/vite/src/node/plugins/esbuild.ts b/packages/vite/src/node/plugins/esbuild.ts index 43c319f2713761..a2d1fe14c95072 100644 --- a/packages/vite/src/node/plugins/esbuild.ts +++ b/packages/vite/src/node/plugins/esbuild.ts @@ -375,6 +375,7 @@ export function resolveEsbuildTranspileOptions( return { ...options, minify: true, + charset: 'utf8', treeShaking: true } } From fe6d9b1df6b650d54926cc2472c3a7b2a41d4211 Mon Sep 17 00:00:00 2001 From: Azat S Date: Wed, 9 Nov 2022 01:37:50 +0300 Subject: [PATCH 2/4] feat: add charset config option --- packages/vite/src/node/__tests__/plugins/esbuild.spec.ts | 2 -- packages/vite/src/node/config.ts | 8 ++++++++ packages/vite/src/node/plugins/esbuild.ts | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts index b405c85e48f48b..d1c98348c5c453 100644 --- a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts +++ b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts @@ -17,7 +17,6 @@ describe('resolveEsbuildTranspileOptions', () => { 'es' ) expect(options).toEqual({ - charset: 'utf8', target: 'es2020', format: 'esm', keepNames: true, @@ -151,7 +150,6 @@ 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 f5cba176f5c246..4034dfb4d83fcc 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -116,6 +116,8 @@ 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 @@ -152,6 +154,11 @@ 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. @@ -630,6 +637,7 @@ export async function resolveConfig( resolve: resolveOptions, publicDir: resolvedPublicDir, cacheDir, + charset: config.charset ?? 'utf8', command, mode, ssr, diff --git a/packages/vite/src/node/plugins/esbuild.ts b/packages/vite/src/node/plugins/esbuild.ts index a2d1fe14c95072..7304d10bb951d9 100644 --- a/packages/vite/src/node/plugins/esbuild.ts +++ b/packages/vite/src/node/plugins/esbuild.ts @@ -308,6 +308,7 @@ export function resolveEsbuildTranspileOptions( const esbuildOptions = config.esbuild || {} const options: TransformOptions = { ...esbuildOptions, + charset: config.charset, target: target || undefined, format: rollupToEsbuildFormatMap[format], // the final build should always support dynamic import and import.meta. @@ -375,7 +376,6 @@ export function resolveEsbuildTranspileOptions( return { ...options, minify: true, - charset: 'utf8', treeShaking: true } } From 5617e921ff1502c861869dada68ed7127614418b Mon Sep 17 00:00:00 2001 From: Azat S Date: Wed, 9 Nov 2022 02:04:16 +0300 Subject: [PATCH 3/4] fix: set default esbuild charset --- packages/vite/src/node/__tests__/plugins/esbuild.spec.ts | 7 +++++++ packages/vite/src/node/config.ts | 8 -------- packages/vite/src/node/plugins/esbuild.ts | 3 ++- 3 files changed, 9 insertions(+), 9 deletions(-) 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..f5cba176f5c246 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, 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. From 05d23a76faf438a1051e75c0d3afb496a4a9114d Mon Sep 17 00:00:00 2001 From: Azat S Date: Wed, 9 Nov 2022 16:15:04 +0300 Subject: [PATCH 4/4] feat: set default charser for dev and optimizer --- packages/vite/src/node/optimizer/index.ts | 1 + packages/vite/src/node/plugins/esbuild.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index 94447b9403393b..9ffc7f72a1ace9 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -612,6 +612,7 @@ export async function runOptimizeDeps( ignoreAnnotations: !isBuild, metafile: true, plugins, + charset: 'utf8', ...esbuildOptions, supported: { 'dynamic-import': true, diff --git a/packages/vite/src/node/plugins/esbuild.ts b/packages/vite/src/node/plugins/esbuild.ts index a10ebfe6dcab1b..137911377d15be 100644 --- a/packages/vite/src/node/plugins/esbuild.ts +++ b/packages/vite/src/node/plugins/esbuild.ts @@ -180,6 +180,7 @@ export function esbuildPlugin(options: ESBuildOptions = {}): Plugin { // and for build as the final optimization is in `buildEsbuildPlugin` const transformOptions: TransformOptions = { target: 'esnext', + charset: 'utf8', ...options, minify: false, minifyIdentifiers: false,