Статическая Обработка Активов 
- Связанный: общедоступный Базовый Путь
 - Связанный: 
assetsIncludeопция конфигурации 
Импорт актива в качестве URL 
Импорт статического актива вернет разрешенный публичный URL, когда он будет обслуживаться:
import 'vite/client'
// ---резать---
import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrlНапример, imgUrl будет /src/img.png во время разработки и станет /assets/img.2d8efhg.png в производственной сборке.
Поведение похоже на file-loader . Разница состоит в том, что импорт может использовать либо абсолютные общественные пути (на основе корня проекта во время DEV), либо относительных путей.
url()Ссылки в CSS обрабатываются одинаково.При использовании плагина VUE, ссылки на активы в шаблонах VUE SFC автоматически преобразуются в импорт.
Общие изображения, носителя и филетипы шрифта обнаруживаются в виде активов автоматически. Вы можете расширить внутренний список, используя опцию
assetsInclude.Ссылка на активы включены как часть графика активов сборки, будут получать имена файлов хеширования и могут обрабатываться плагинами для оптимизации.
Активы меньше в байтах, чем опция
assetsInlineLimit, будут вставлены в качестве URL -адреса данных Base64.Заполнители GIT LFS автоматически исключаются из INLINGING, поскольку они не содержат содержания файла, который они представляют. Чтобы получить внедрение, обязательно загрузите содержимое файла через GIT LFS перед строительством.
TypeScript, по умолчанию, не распознает импорт статического актива в качестве действительных модулей. Чтобы исправить это, включите
vite/client.
Inlining SVGs through url()
При передаче URL -адреса SVG построению вручную url() от JS переменная должна быть завернута в двойные кавычки.
import 'vite/client'
// ---резать---
import imgUrl from './img.svg'
document.getElementById('hero-img').style.background = `url("${imgUrl}")`Явный импорт URL 
Активы, которые не включены во внутренний список или в assetsInclude , могут быть явно импортированы в виде URL с использованием ?url суффикс. Это полезно, например, для импорта работников краски Houdini .
import 'vite/client'
// ---резать---
import workletURL from 'extra-scalloped-border/worklet.js?url'
CSS.paintWorklet.addModule(workletURL)Явная Встроенная Обработка 
Активы могут быть явно импортированы с помощью внедрения или отсутствия внедрения, используя суффикс ?inline или ?no-inline соответственно.
import 'vite/client'
// ---резать---
import imgUrl1 from './img.svg?no-inline'
import imgUrl2 from './img.png?inline'Импорт Актива В Качестве Строки 
Активы могут быть импортированы в виде строк, используя суффикс ?raw .
import 'vite/client'
// ---резать---
import shaderString from './shader.glsl?raw'Импорт сценария как работника 
Сценарии могут быть импортированы в качестве веб -работников с суффиксом ?worker или ?sharedworker .
import 'vite/client'
// ---резать---
// Отдельный кусок в производственной сборке
import Worker from './shader.js?worker'
const worker = new Worker()import 'vite/client'
// ---резать---
// Sharedworker
import SharedWorker from './shader.js?sharedworker'
const sharedWorker = new SharedWorker()import 'vite/client'
// ---резать---
// Вставлен как строки base64
import InlineWorker from './shader.js?worker&inline'Проверьте раздел веб -работника для получения более подробной информации.
public каталог 0 
Если у вас есть активы:
- Никогда не упоминался в исходном коде (например, 
robots.txt) - Необходимо сохранить точно такое же имя файла (без хэширования)
 - ... или вы просто не хотите сначала импортировать актив, чтобы получить его URL
 
Затем вы можете поместить актив в специальном каталоге public под вашим проектом root. Активы в этом каталоге будут обслуживаться на корневом пути / во время разработки и скопированы в корень дистанционного каталога как есть.
Каталог по умолчанию до <root>/public , но может быть настроен с помощью publicDir опции .
Обратите внимание, что вы всегда должны ссылаться на public активов с использованием корневого абсолютного пути - Например, public/icon.png должен ссылаться в исходном коде как /icon.png .
новый URL (url, import.meta.url) 
import.meta.url - это собственная функция ESM, которая разоблачает URL текущего модуля. Сочетая его с нативным конструктором URL , мы можем получить полный разрешенный URL -адрес статического актива, используя относительный путь от модуля JavaScript:
const imgUrl = new URL('./img.png', import.meta.url).href
document.getElementById('hero-img').src = imgUrlЭто работает и изначально в современных браузерах - на самом деле, Vite не нужно обрабатывать этот код во время разработки!
Этот шаблон также поддерживает динамические URL -адреса с помощью литералов Template:
function getImageUrl(name) {
  // Обратите внимание, что это не включает файлы в подкатализации
  return new URL(`./dir/${name}.png`, import.meta.url).href
}Во время производственной сборки VITE выполнит необходимые преобразования, чтобы URL -адреса все еще указывали на правильное место, даже после комплектации и хэширования активов. Тем не менее, строка URL должна быть статичной, чтобы ее можно было проанализировать, иначе код останется как есть, что может вызвать ошибки времени выполнения, если build.target не поддерживает import.meta.url
// VITE не преобразует это
const imgUrl = new URL(imagePath, import.meta.url).hrefHow it works
VITE преобразует функцию getImageUrl в:
import __img0png from './dir/img0.png'
import __img1png from './dir/img1.png'
function getImageUrl(name) {
  const modules = {
    './dir/img0.png': __img0png,
    './dir/img1.png': __img1png,
  }
  return new URL(modules[`./dir/${name}.png`], import.meta.url).href
}Does not work with SSR
Этот шаблон не работает, если вы используете VITE для рендеринга на стороне сервера, потому что import.meta.url имеют различную семантику в браузерах против Node.js. Серверный пакет также не может определить URL -адрес хоста клиента заранее.