Code Example 1: Базовая конфигурация Vite
❓ Что делает функция defineConfig и зачем подключается плагин vue()?
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
})
Code Example 2: Расширенная конфигурация Vite
❓ Что настраивают секции resolve.alias, server и build в данной конфигурации? Для чего нужен алиас @?
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'@components': resolve(__dirname, 'src/components'),
},
},
server: {
port: 3000,
open: true,
},
build: {
outDir: 'dist',
sourcemap: true,
},
})
Code Example 3: Использование алиасов в Vue-компоненте
❓ Какой алиас используется в этом импорте и какой реальный путь он заменяет?
<script setup>
import MyComponent from '@/components/MyComponent.vue'
</script>
Code Example 4: Импорт ассетов в Vue-компоненте
❓ Чем отличается обычный импорт изображения от импорта с суффиксом ?raw? Как используется импортированный URL в шаблоне?
<script setup>
import logoUrl from '@/assets/logo.svg'
import iconRaw from '@/assets/icon.svg?raw'
</script>
<template>
<img :src="logoUrl" alt="Logo" />
</template>
Code Example 5: Переменные окружения в Vite
❓ Как в Vite получить доступ к переменным окружения? Какие встроенные переменные доступны через import.meta.env?
const apiUrl = import.meta.env.VITE_API_URL
console.log(import.meta.env.MODE)
console.log(import.meta.env.DEV)
console.log(import.meta.env.PROD)
console.log(import.meta.env.BASE_URL)
Code Example 6: Компонент с HMR
❓ Что произойдёт при изменении шаблона или стилей этого компонента в режиме разработки Vite? Сохранится ли значение count?
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
<button @click="count++">
Count: {{ count }}
</button>
</template>
Code Example 7: Полная настройка Vue-проекта
❓ Что делают секции server.proxy, css.preprocessorOptions и build.rollupOptions.output.manualChunks в этой конфигурации?
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
},
},
server: {
port: 3000,
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
},
},
},
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/variables.scss";`,
},
},
},
build: {
rollupOptions: {
output: {
manualChunks: {
vendor: ['vue', 'vue-router', 'pinia'],
},
},
},
},
})