РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗tlVtPlOr 64 of 72 menu
◀ ▶

Порядок плагинов в Vite

Порядок плагинов решает, кто видит уже изменённый текст: второй хук получает результат первого.

Оба плагина будут менять строку модуля через transform. Первый заменит hello на world, второй - world на vite. Если поменять их местами, на экране останется другое слово. Модуль с исходным текстом:

document.querySelector('#app').textContent = 'hello';

Страница подключает модуль как обычно:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>hello</title> </head> <body> <div id="app"></div> <script type="module" src="/src/main.js"></script> </body> </html>

В vite.config.js запишем два объекта в массив plugins в нужном порядке:

import { defineConfig } from 'vite' export default defineConfig({ plugins: [ { name: 'step-one', transform(code, id) { if (!id.endsWith('main.js')) { return } return code.replaceAll('hello', 'world') }, }, { name: 'step-two', transform(code, id) { if (!id.endsWith('main.js')) { return } return code.replaceAll('world', 'vite') }, }, ], })

После перезапуска сервера разработки откроем страницу и увидим vite: второй хук уже не находит hello, а работает со строкой world от первого. Поменяем местами объекты в массиве и снова проверим экран - цепочка разорвётся, если первым станет шаг, который ищет world в ещё не изменённом коде.

Замените в модуле литерал на ready, настройте первый хук на wait, второй на done, и убедитесь, что на странице появляется done.

Поменяйте порядок двух плагинов местами при том же ready в исходнике и опишите, какое слово остаётся на экране и почему второй хук не срабатывает как ожидалось.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить