Эффективный расцепитель рабочего процесса Webpack и код приложения

У меня возникли проблемы с поиском достаточной документации и примеров Webpack для хэширования идеального рабочего процесса dev для моей ситуации. Вот все функции, которые сделают рабочий процесс идеальным:

  • Наблюдение, в идеале, через Gulp, с эффективным кэшированием. (Не думайте, что мне нужна горячая замена модуля, и подозревайте, что она не подходит для моей среды для разработчиков.)

  • Модули поставщика (прямо сейчас у меня есть только пакеты npm, а не все из них, отображающие глобальные глобальные карты UMD в их основном файле, если они дошли до этого), которые

    а. не анализируется и повторно скомпилируется во время просмотра (поэтому перекомпиляция выполняется быстрее),

    б. не получают sourcemap (поэтому браузер devtools быстрее реагирует) и

    с. напишите в отдельный пакет vendor.js, который браузеры могут кэшировать отдельно от пакетов приложений.

  • Модули приложений, которые

    а. явно о всех зависимостях (т.е. import React from 'react';, даже если React фактически открыт для всего мира или что-то через # 2),

    б. повторно скомпилированы во время просмотра, и

    с. получить исходную карту.

Большинство из того, что я прочитал в документации или примерах, похоже, не отразилось на этом рабочем процессе на голове.

Хотя я вижу в документах, как создать пакет, специфичный для вендора (воспроизведенный здесь: Простое решение для обмена модулями, загружаемыми через NPM через несколько пакетов Browserify или Webpack), представленный простой пример не адресует 2a и 2b.

Я не вижу в документах каких-либо способов указывать разные конфигурации компиляции (исходные карты и т.д.) для разных фрагментов или создавать полностью отдельные пакеты Webpack с отдельными конфигурационными файлами, которые могут ссылаться друг на друга, если только глобализация всех библиотеки поставщиков и использовать их как внешние (?), что не идеально...

Кроме того, мне любопытно, используют ли пользователи Gulp gulp-webpack, а не такие настройки, как в http://webpack.github.io/docs/usage-with-gulp.html. (Я не уверен, насколько хорошо webpack-dev-server будет вписываться в среду моего dev, поэтому, если это возможно, нужно придерживаться gulp-watch).

Я пропустил то, о чем знают другие пользователи Webpack? Какой лучший способ сделать это?

ИЛИ возможно ли, что Webpack не подходит для работы?

Ответ 1

Наблюдение, в идеале, через Gulp, с эффективным кэшированием. (Не думайте, что мне нужна горячая замена модуля, и подозревайте, что она не подходит для моей среды для разработчиков.)

Используйте webpack-dev-server.

Для этого вам действительно не нужен Gulp, но вы можете использовать его API Node с Gulp (я это делаю).

Модули поставщика (прямо сейчас у меня есть только пакеты npm, а не все из них, отображающие глобальные глобальные карты UMD в их основном файле, если они дошли до этого), которые

а. не анализируется и повторно скомпилируется во время просмотра (поэтому перекомпиляция выполняется быстрее),

Я не думаю, что без изменений файлы были бы проанализированы или перекомпилированы во время просмотра.

б. не получают sourcemap (поэтому браузер devtools быстрее реагирует) и

Не знаю, как это сделать. Я думаю, что исходные карты либо все, либо все. Но вы можете использовать devtool: 'eval', который работает намного быстрее, чем исходные карты.

с. напишите в отдельный комплект vendor.js, что браузеры могут кэшировать отдельно от пакетов приложений.

Я думаю, что вы ищете split-by-name-webpack-plugin.

Модули приложений, которые

а. явным образом обо всех зависимостях (т.е. import React from "реагировать", даже если React фактически открыт глобально или что-то через # 2),

Это сработает. В require глобально открытые библиотеки используйте externals вариант конфигурации.

б. повторно скомпилированы во время просмотра, и

Что изменилось, будет перекомпилировано (если вы используете webpack-dev-сервер).

Это не отвечает на все ваши вопросы, но я надеюсь, что этого достаточно, чтобы выяснить, работает ли это для вас. Я не думаю, что "не смотреть библиотеки" - такая большая проблема, как вы говорите (очень мало штрафа за восстановление кэшированных модулей), и если вы раскошелитесь на исходные карты и используете devtool: 'eval', я бы сказал это очень быстро. Наконец, появилось новое смотрящее решение в работе для Webpack, чтобы вы могли его отбросить. Это должно быть еще лучше.