0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-02-17 22:44:24 -05:00

feat(vue): add support for devtools (#10929)

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
This commit is contained in:
Florian Lefebvre 2024-05-06 16:02:06 +02:00 committed by GitHub
parent 11c58a9c5a
commit 082abb82d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 279 additions and 20 deletions

View file

@ -0,0 +1,18 @@
---
"@astrojs/vue": minor
---
Adds a `devtools` option
You can enable the [official Vue DevTools](https://devtools-next.vuejs.org/) while working in development mode by setting `devtools:true` in your `vue()` integration config:
```js
import { defineConfig } from "astro/config"
import vue from "@astrojs/vue"
export default defineConfig({
integrations: [
vue({ devtools: true })
]
})
```

View file

@ -42,7 +42,8 @@
"dependencies": {
"@vitejs/plugin-vue": "^5.0.4",
"@vitejs/plugin-vue-jsx": "^3.1.0",
"@vue/compiler-sfc": "^3.4.26"
"@vue/compiler-sfc": "^3.4.26",
"vite-plugin-vue-devtools": "^7.1.3"
},
"devDependencies": {
"astro": "workspace:*",

View file

@ -3,12 +3,16 @@ import type { Options as VueOptions } from '@vitejs/plugin-vue';
import vue from '@vitejs/plugin-vue';
import type { Options as VueJsxOptions } from '@vitejs/plugin-vue-jsx';
import { MagicString } from '@vue/compiler-sfc';
import type { AstroIntegration, AstroRenderer } from 'astro';
import type { AstroIntegration, AstroRenderer, HookParameters } from 'astro';
import type { Plugin, UserConfig } from 'vite';
const VIRTUAL_MODULE_ID = 'virtual:@astrojs/vue/app';
const RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`;
interface Options extends VueOptions {
jsx?: boolean | VueJsxOptions;
appEntrypoint?: string;
devtools?: boolean;
}
function getRenderer(): AstroRenderer {
@ -28,9 +32,6 @@ function getJsxRenderer(): AstroRenderer {
}
function virtualAppEntrypoint(options?: Options): Plugin {
const virtualModuleId = 'virtual:@astrojs/vue/app';
const resolvedVirtualModuleId = '\0' + virtualModuleId;
let isBuild: boolean;
let root: string;
let appEntrypoint: string | undefined;
@ -49,12 +50,12 @@ function virtualAppEntrypoint(options?: Options): Plugin {
}
},
resolveId(id: string) {
if (id == virtualModuleId) {
return resolvedVirtualModuleId;
if (id == VIRTUAL_MODULE_ID) {
return RESOLVED_VIRTUAL_MODULE_ID;
}
},
load(id: string) {
if (id === resolvedVirtualModuleId) {
if (id === RESOLVED_VIRTUAL_MODULE_ID) {
if (appEntrypoint) {
return `\
import * as mod from ${JSON.stringify(appEntrypoint)};
@ -93,7 +94,10 @@ export const setup = async (app) => {
};
}
async function getViteConfiguration(options?: Options): Promise<UserConfig> {
async function getViteConfiguration(
command: HookParameters<'astro:config:setup'>['command'],
options?: Options
): Promise<UserConfig> {
let vueOptions = {
...options,
template: {
@ -105,7 +109,7 @@ async function getViteConfiguration(options?: Options): Promise<UserConfig> {
const config: UserConfig = {
optimizeDeps: {
include: ['@astrojs/vue/client.js', 'vue'],
exclude: ['@astrojs/vue/server.js', 'virtual:@astrojs/vue/app'],
exclude: ['@astrojs/vue/server.js', VIRTUAL_MODULE_ID],
},
plugins: [vue(vueOptions), virtualAppEntrypoint(vueOptions)],
ssr: {
@ -119,6 +123,15 @@ async function getViteConfiguration(options?: Options): Promise<UserConfig> {
config.plugins?.push(vueJsx(jsxOptions));
}
if (command === 'dev' && options?.devtools) {
const vueDevTools = (await import('vite-plugin-vue-devtools')).default;
config.plugins?.push(
vueDevTools({
appendTo: VIRTUAL_MODULE_ID,
})
);
}
return config;
}
@ -126,12 +139,12 @@ export default function (options?: Options): AstroIntegration {
return {
name: '@astrojs/vue',
hooks: {
'astro:config:setup': async ({ addRenderer, updateConfig }) => {
'astro:config:setup': async ({ addRenderer, updateConfig, command }) => {
addRenderer(getRenderer());
if (options?.jsx) {
addRenderer(getJsxRenderer());
}
updateConfig({ vite: await getViteConfiguration(options) });
updateConfig({ vite: await getViteConfiguration(command, options) });
},
},
};

243
pnpm-lock.yaml generated
View file

@ -5235,6 +5235,9 @@ importers:
'@vue/compiler-sfc':
specifier: ^3.4.26
version: 3.4.26
vite-plugin-vue-devtools:
specifier: ^7.1.3
version: 7.1.3(vite@5.2.10)(vue@3.4.26)
devDependencies:
astro:
specifier: workspace:*
@ -5584,6 +5587,10 @@ packages:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
/@antfu/utils@0.7.7:
resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==}
dev: false
/@asamuzakjp/dom-selector@2.0.2:
resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==}
dependencies:
@ -5787,7 +5794,7 @@ packages:
'@babel/helper-optimise-call-expression': 7.22.5
'@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5)
'@babel/helper-skip-transparent-expression-wrappers': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/helper-split-export-declaration': 7.24.5
semver: 6.3.1
dev: false
@ -5897,13 +5904,6 @@ packages:
'@babel/types': 7.24.5
dev: false
/@babel/helper-split-export-declaration@7.22.6:
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.24.5
dev: false
/@babel/helper-split-export-declaration@7.24.5:
resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==}
engines: {node: '>=6.9.0'}
@ -5955,6 +5955,59 @@ packages:
dependencies:
'@babel/types': 7.24.5
/@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.5):
resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
peerDependenciesMeta:
'@babel/core':
optional: true
dependencies:
'@babel/core': 7.24.5
'@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.5)
'@babel/helper-plugin-utils': 7.24.0
'@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.5)
dev: false
/@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.5):
resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
peerDependenciesMeta:
'@babel/core':
optional: true
dependencies:
'@babel/core': 7.24.5
'@babel/helper-plugin-utils': 7.24.0
dev: false
/@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5):
resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
peerDependenciesMeta:
'@babel/core':
optional: true
dependencies:
'@babel/core': 7.24.5
'@babel/helper-plugin-utils': 7.24.0
dev: false
/@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5):
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
peerDependenciesMeta:
'@babel/core':
optional: true
dependencies:
'@babel/core': 7.24.5
'@babel/helper-plugin-utils': 7.24.0
dev: false
/@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5):
resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
engines: {node: '>=6.9.0'}
@ -7780,6 +7833,10 @@ packages:
playwright: 1.43.1
dev: true
/@polka/url@1.0.0-next.25:
resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
dev: false
/@preact/preset-vite@2.8.2(preact@10.20.2):
resolution: {integrity: sha512-m3tl+M8IO8jgiHnk+7LSTFl8axdPXloewi7iGVLdmCwf34XOzEUur0bZVewW4DUbUipFjTS2CXu27+5f/oexBA==}
peerDependencies:
@ -7873,6 +7930,20 @@ packages:
picomatch: 2.3.1
dev: false
/@rollup/pluginutils@5.1.0:
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
dev: false
/@rollup/rollup-android-arm-eabi@4.17.1:
resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==}
cpu: [arm]
@ -8982,6 +9053,39 @@ packages:
'@vue/compiler-dom': 3.4.26
'@vue/shared': 3.4.26
/@vue/devtools-core@7.1.3(vite@5.2.10)(vue@3.4.26):
resolution: {integrity: sha512-pVbWi8pf2Z/fZPioYOIgu+cv9pQG55k4D8bL31ec+Wfe+pQR0ImFDu0OhHfch1Ra8uvLLrAZTF4IKeGAkmzD4A==}
dependencies:
'@vue/devtools-kit': 7.1.3(vue@3.4.26)
'@vue/devtools-shared': 7.1.3
mitt: 3.0.1
nanoid: 3.3.7
pathe: 1.1.2
vite-hot-client: 0.2.3(vite@5.2.10)
transitivePeerDependencies:
- vite
- vue
dev: false
/@vue/devtools-kit@7.1.3(vue@3.4.26):
resolution: {integrity: sha512-NFskFSJMVCBXTkByuk2llzI3KD3Blcm7WqiRorWjD6nClHPgkH5BobDH08rfulqq5ocRt5xV+3qOT1Q9FXJrwQ==}
peerDependencies:
vue: ^3.0.0
dependencies:
'@vue/devtools-shared': 7.1.3
hookable: 5.5.3
mitt: 3.0.1
perfect-debounce: 1.0.0
speakingurl: 14.0.1
vue: 3.4.26(typescript@5.4.5)
dev: false
/@vue/devtools-shared@7.1.3:
resolution: {integrity: sha512-KJ3AfgjTn3tJz/XKF+BlVShNPecim3G21oHRue+YQOsooW+0s+qXvm09U09aO7yBza5SivL1QgxSrzAbiKWjhQ==}
dependencies:
rfdc: 1.3.1
dev: false
/@vue/reactivity@3.1.5:
resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==}
dependencies:
@ -10594,6 +10698,10 @@ packages:
is-arrayish: 0.2.1
dev: true
/error-stack-parser-es@0.1.1:
resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==}
dev: false
/es-abstract@1.23.3:
resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
engines: {node: '>= 0.4'}
@ -11711,6 +11819,10 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
/hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
dev: false
/hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
dev: true
@ -13351,6 +13463,10 @@ packages:
rimraf: 5.0.5
dev: false
/mitt@3.0.1:
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
dev: false
/mixme@0.5.10:
resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==}
engines: {node: '>= 8.0.0'}
@ -13945,6 +14061,10 @@ packages:
engines: {node: '>= 14.16'}
dev: true
/perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: false
/periscopic@3.1.0:
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
dependencies:
@ -14995,6 +15115,10 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
/rfdc@1.3.1:
resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
dev: false
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
@ -15363,6 +15487,15 @@ packages:
is-arrayish: 0.3.2
dev: false
/sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
dependencies:
'@polka/url': 1.0.0-next.25
mrmime: 2.0.0
totalist: 3.0.1
dev: false
/sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: false
@ -15496,6 +15629,11 @@ packages:
resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
dev: true
/speakingurl@14.0.1:
resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
engines: {node: '>=0.10.0'}
dev: false
/speech-rule-engine@4.0.7:
resolution: {integrity: sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==}
hasBin: true
@ -15965,6 +16103,11 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
/totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
dev: false
/tough-cookie@4.1.3:
resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
engines: {node: '>=6'}
@ -16510,6 +16653,17 @@ packages:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
/vite-hot-client@0.2.3(vite@5.2.10):
resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==}
peerDependencies:
vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
dependencies:
vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0)
dev: false
/vite-node@1.5.0(@types/node@18.19.31):
resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==}
engines: {node: ^18.0.0 || >=20.0.0}
@ -16531,6 +16685,33 @@ packages:
- terser
dev: false
/vite-plugin-inspect@0.8.4(vite@5.2.10):
resolution: {integrity: sha512-G0N3rjfw+AiiwnGw50KlObIHYWfulVwaCBUBLh2xTW9G1eM9ocE5olXkEYUbwyTmX+azM8duubi+9w5awdCz+g==}
engines: {node: '>=14'}
peerDependencies:
'@nuxt/kit': '*'
vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
'@nuxt/kit':
optional: true
vite:
optional: true
dependencies:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0
debug: 4.3.4(supports-color@8.1.1)
error-stack-parser-es: 0.1.1
fs-extra: 11.2.0
open: 10.1.0
perfect-debounce: 1.0.0
picocolors: 1.0.0
sirv: 2.0.4
vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0)
transitivePeerDependencies:
- rollup
- supports-color
dev: false
/vite-plugin-solid@2.10.2(solid-js@1.8.17):
resolution: {integrity: sha512-AOEtwMe2baBSXMXdo+BUwECC8IFHcKS6WQV/1NEd+Q7vHPap5fmIhLcAzr+DUJ04/KHx/1UBU0l1/GWP+rMAPQ==}
peerDependencies:
@ -16554,6 +16735,52 @@ packages:
- supports-color
dev: false
/vite-plugin-vue-devtools@7.1.3(vite@5.2.10)(vue@3.4.26):
resolution: {integrity: sha512-qv8Z4yok9RYo6TEs89WnIAlmTHby/+XTim8tlSnMs3lAPcQqqcl/wGRY8gAeYrGCANngOqO+VuabW3Jb1HZtyw==}
engines: {node: '>=v14.21.3'}
peerDependencies:
vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
dependencies:
'@vue/devtools-core': 7.1.3(vite@5.2.10)(vue@3.4.26)
'@vue/devtools-kit': 7.1.3(vue@3.4.26)
'@vue/devtools-shared': 7.1.3
execa: 8.0.1
sirv: 2.0.4
vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0)
vite-plugin-inspect: 0.8.4(vite@5.2.10)
vite-plugin-vue-inspector: 5.0.1(vite@5.2.10)
transitivePeerDependencies:
- '@nuxt/kit'
- rollup
- supports-color
- vue
dev: false
/vite-plugin-vue-inspector@5.0.1(vite@5.2.10):
resolution: {integrity: sha512-R93P8iFa6BPODhc/aOtO04A8FFMMyFIfm8ZVSmN+8vU1TgwsHya734APGpX4fVHSPX2aVwYyiezXBUYQ0Opsqw==}
peerDependencies:
vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
dependencies:
'@babel/core': 7.24.5
'@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.5)
'@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5)
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5)
'@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.5)
'@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.5)
'@vue/compiler-dom': 3.4.26
kolorist: 1.8.0
magic-string: 0.30.10
vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0)
transitivePeerDependencies:
- supports-color
dev: false
/vite-svg-loader@4.0.0:
resolution: {integrity: sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==}
peerDependencies: