Нужно создать собственный плагин или загрузчик Webpack 2? Не знаете как и с чего начать? Я расскажу о быстрой настройке, чтобы вы могли начать создавать плагины, какие душе угодно! Вы можете увидеть полные результаты в github repo.

Это кому?

Вы знаете javascript и у вас есть идея для плагина или загрузчика.

Настройка отладки

Я покажу вам, как отлаживать систему на узле ›= 6.3.0. Причина в том, что я буду работать с флагом --inspect, который делает отладку быстрой и легкой. Если вы знаете, как отлаживать узел через node-inspector или любой другой отладчик, можете продолжать. Опять же, мои примеры будут для узла ›= 6.3.0. Я предлагаю обновиться, потому что, по моему опыту, отладка с помощью --inspect выполняется намного быстрее, чем с node-inspector.

Отлично, теперь давайте установим V8 inspector для Google Chrome. V8 inspector создает уникальный URL-адрес для отладки при каждом запуске. Плагин позволяет вам нажать кнопку, чтобы перейти к правильному URL-адресу, не копируя каждый раз.

Я добавил крученый флаг --debug-brk. Он говорит узлу прекратить отладку по первой команде. В противном случае он выполнит весь скрипт. Без него быстрый скрипт может выйти до того, как вы сможете подключить отладчик.

Делаем загрузчик

Загрузчик прочитает команды require или import и запустит присоединенный загрузчик. Мы сообщаем Webpack, какой загрузчик запускать, с помощью клавиши test. Давайте посмотрим на пример.

В приведенном выше примере мы говорим Webpack запустить загрузчик coolio-loader, если он когда-либо встретит файл с расширением gangstas_paradise. При желании можно указать ключи include или exclude с путями (include: './pennsylvania'). Простое включение загрузчика не вызовет coolio-loader. Где-то в коде должен быть require или import файл с .gangstas_paradise. Обратите внимание, как я добавил json-loader перед coolio-loader. Это связано с тем, что Webpack идет справа налево, поэтому вывод coolio-loader переходит в json-loader.

По умолчанию Webpack будет искать указанный загрузчик в папке node_modules. К счастью, Webpack позволяет нам объявить объект resolveLoader, где мы можем указать, где искать загрузчики. Выше я добавил объект resolveLoader с каталогом my-loaders. Это позволяет мне иметь пользовательские, неопубликованные загрузчики. Отлично подходит для развития!

Файл coolio-loader.js находится в каталоге my-loaders и выглядит следующим образом:

Загрузчик должен вернуть буфер, иначе вы получите ошибку. В моем примере я возвращаю объект JSON. Я вывожу несколько интересных переменных, которые вам могут понадобиться. После завершения настройки выполните следующую команду и откройте вкладку для файла V8 debugger.

Когда окно загрузит отладчик, нажмите кнопку воспроизведения, чтобы начать выполнение. Подождите секунду, и отладчик дойдет до файла coolio-loader.js и остановится на строке отладчика. Теперь вы можете отлаживать и делать все, что душе угодно. Здесь я оставляю вас наедине с вашей работой. Иди загрузи что-нибудь прямо сейчас!

Создание плагина

Плагин настроить проще, чем загрузчик. Я следовал примерам со страницы плагинов Webpack.

Все, что было изменено, это добавление массива plugins. Просто запросите модуль и добавьте его в массив plugins. Вы определяете, что ваш конструктор принимает или нуждается.

Настроив обе вещи, запустите команду node и подключитесь к ней через расширение.

Обратите внимание, что плагины запускаются перед резолверами. Теперь вы готовы сделать любой плагин или загрузчик. Когда вы закончите, вы можете загрузить свои плагины в npm или нет. Только не забудьте удалить все отладчики.

Ресурсы

  1. Пример репо для этого поста
  2. Как сделать плагин
  3. Как сделать загрузчик
  4. Предыдущая ссылка: Как сделать загрузчик

Вывод

После всего этого вы сможете начать создавать свои собственные загрузчики и плагины. Кроме того, вы также можете отлаживать любое приложение узла. Во флаге --inspect нет ничего особенного, кроме версии узла. Удачного взлома!