Skip to content

Commit 46d3d65

Browse files
authored
fix: properly interpret boolean values in define (#545)
1 parent 4abe3be commit 46d3d65

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

packages/plugin-vue-jsx/src/index.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,28 @@ function vueJsxPlugin(options: Options = {}): Plugin {
5353
name: 'vite:vue-jsx',
5454

5555
config(config) {
56+
const parseDefine = (v: unknown) => {
57+
try {
58+
return typeof v === 'string' ? JSON.parse(v) : v
59+
} catch (err) {
60+
return v
61+
}
62+
}
5663
return {
5764
// only apply esbuild to ts files
5865
// since we are handling jsx and tsx now
5966
esbuild: {
6067
include: /\.ts$/,
6168
},
6269
define: {
63-
__VUE_OPTIONS_API__: config.define?.__VUE_OPTIONS_API__ ?? true,
64-
__VUE_PROD_DEVTOOLS__: config.define?.__VUE_PROD_DEVTOOLS__ ?? false,
70+
__VUE_OPTIONS_API__:
71+
parseDefine(config.define?.__VUE_OPTIONS_API__) ?? true,
72+
__VUE_PROD_DEVTOOLS__:
73+
parseDefine(config.define?.__VUE_PROD_DEVTOOLS__) ?? false,
6574
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__:
66-
config.define?.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ ?? false,
75+
parseDefine(
76+
config.define?.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__,
77+
) ?? false,
6778
},
6879
}
6980
},

packages/plugin-vue/src/index.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,22 +245,31 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin<Api> {
245245
},
246246

247247
config(config) {
248+
const parseDefine = (v: unknown) => {
249+
try {
250+
return typeof v === 'string' ? JSON.parse(v) : v
251+
} catch (err) {
252+
return v
253+
}
254+
}
248255
return {
249256
resolve: {
250257
dedupe: config.build?.ssr ? [] : ['vue'],
251258
},
252259
define: {
253260
__VUE_OPTIONS_API__:
254261
options.value.features?.optionsAPI ??
255-
config.define?.__VUE_OPTIONS_API__ ??
262+
parseDefine(config.define?.__VUE_OPTIONS_API__) ??
256263
true,
257264
__VUE_PROD_DEVTOOLS__:
258265
(options.value.features?.prodDevtools ||
259-
config.define?.__VUE_PROD_DEVTOOLS__) ??
266+
parseDefine(config.define?.__VUE_PROD_DEVTOOLS__)) ??
260267
false,
261268
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__:
262269
(options.value.features?.prodHydrationMismatchDetails ||
263-
config.define?.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__) ??
270+
parseDefine(
271+
config.define?.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__,
272+
)) ??
264273
false,
265274
},
266275
ssr: {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy