Теперь, когда мы настроили webpack для упаковки и объединения нашего js-кода в один файл -app.bundle.js
, нам нужен index.html для нашего веб-приложения с тегом сценария, имеющимsrc='app.bundle.js'
.
У нас есть два варианта: создать его вручную или создать автоматически с помощью «html-webpack-plugin».
Вариант 1. Создайте index.html вручную
Давайте сначала создадим файл index.html вручную. Внутри папки «dist
», где webpack выводит файл app.bundle.js
, добавьте файл «index.html» с требуемым тегом скрипта, как показано ниже:
Добавьте приведенный ниже код в созданный выше index.html
Если вы откроете index.html
в браузере, вы увидите, что наш код javascript работает:
Вариант 2. Использование webpack-html-plugin
для создания index.html
Хотя создание index.html вручную работает хорошо, было бы неплохо, если бы webpack мог автоматически создавать index.html для нас с включенным тегом <script>
с его src, указывающим на наш app.bundle.js
.
Webpack может сделать это за нас с помощью html-webpack-plugin
. Использование этого плагина имеет некоторые дополнительные преимущества, такие как автоматическое хеширование атрибута 'src' встроенного тега <script>
при каждом запуске веб-пакета, что заставляет браузер получать последнюю версию файла с сервера вместо использования кэшированного файла всякий раз, когда он имеет новый хэш.
Давайте посмотрим, как настроить плагин -
1. Сначала удалите вручную созданный index.html
, который мы создали в предыдущем разделе.
2. Установите html-webpack-plugin:
$ npm install html-webpack-plugin
3. Настройте webpack.config.js
для использования плагина:
В the webpack.config.js,
"require" плагин и для настройки параметров плагина нам нужно добавить свойство плагинов в конфигурацию, как показано ниже:
Здесь мы добавили новый объект HtmlWebpackPlugin в массив plugins
объекта webpack.config. Обратите внимание, что для параметра hash
установлено значение true, что добавит уникальный хеш к src встроенного тега <script>
.
4. Теперь запустите команду npm start
для webpack, чтобы пересобрать пакет.
npm start
5. На этот раз мы увидим, что 'html-webpack-plugin'
автоматически создал для нас index.html
с включенным тегом <script>
, src которого указывает на сгенерированный app.bundle.js
.
Использование настраиваемого шаблона для создания index.html
Отлично, теперь у нас есть webpack, создающий index.html с помощью HtmlWebpackPlugin.
Однако, как вы заметили на скриншоте выше, index.html, созданный с помощью HtmlWebpackPlugin, очень прост, просто встраивается тег <script>
. В нем отсутствует какой-либо другой HTML-контент, включая наш настраиваемый заголовок, заголовок страницы и приветственное сообщение, которые мы добавили при создании файла вручную в приведенном выше разделе. Если мы посмотрим на файл index.html, HtmlWebpackPlugin, созданный в браузере, в настоящее время, за исключением того, что наш код js работает, он будет выглядеть пустым:
Если нам нужно настраиваемое HTML-содержимое в созданном HtmlWebpackPlugin index.html, мы можем создать html-файл шаблона и указать плагину использовать его в качестве шаблона в параметрах, как показано ниже:
- Создайте HTML-файл шаблона - внутри нашей папки
src
создайте файл index.html:
2. Добавьте приведенный ниже код в src / index.html:
Обратите внимание на элементы-заполнители <%= htmlWebpackPlugin.options.title %>
и <%= htmlWebpackPlugin.options.myPageHeader %>
, которые есть в приведенном выше html-файле, которые мы должны установить в качестве шаблона для HtmlWebpackPlugin для создания index.html. Мы предоставим значения для этих параметров-заполнителей в параметрах конфигурации плагина webpack.config.js.
3. Теперь в файле webpack.config.js
обновите конфигурацию HtmlWebpackPlugin, чтобы использовать свойство «template
», как показано ниже:
Обратите внимание на новые параметры, которые мы добавили в объект конфигурации HtmlWebpackPlugin
template: './src/index.html'
- этот параметр указывает, какой файл использовать в качестве шаблона для создаваемого index.html.title: 'My Awesome application'
– это настраиваемое свойство, которое мы добавили к объекту конфигурации, значение этого свойства будет использоваться для встраивания в элемент-заполнитель<%= htmlWebpackPlugin.options.title %>
, который есть в нашем html-файле шаблона.myPageHeader: 'Hello World'
– это еще одно настраиваемое свойство, которое мы добавили в объект конфигурации, значение этого свойства будет использоваться для встраивания в элемент-заполнитель<%= htmlWebpackPlugin.options.myPageHeader %>
, который есть в нашем html-файле шаблона.
3. Запустите npm start
команду для webpack, чтобы пересобрать пакет.
npm start
4. На этот раз html-webpack-plugin будет использовать index.html, который мы создали в папке src в качестве шаблона, и, таким образом, сгенерированный index.html
в папке 'dist' будет содержать наш пользовательский HTML в дополнение к встроенному тегу <script>
.
5. Ниже показано, как index.html теперь будет выглядеть в браузере:
В следующем разделе мы узнаем о режиме просмотра веб-пакета, который заставляет веб-пакет следить за любыми изменениями, которые мы вносим в наш код, и перезапускаться сам по себе, чтобы перестроить пакет, когда в код внесены какие-либо изменения.
[‹ Назад: файл конфигурации Webpack ] [ Далее: режим «смотреть ›› »]