Чтобы выполнить то, что вы ищете, сначала прочтите документацию к плагину:
- Создание нескольких файлов HTML .
- Написание собственных шаблонов .
Теперь, чтобы иметь контроль над сгенерированным HTML, вы должны знать, что любой дополнительный ключ, который вы добавляете в HtmlWebpackPlugin
config будет доступен через htmlWebpackPlugin.options
.
Например, добавление ключа dir
в конфигурацию:
webpack.config.js
plugins: [
new HtmlWebpackPlugin({
title: 'Custom template',
// Load a custom template (lodash by default)
template: 'index.template.html',
// Extra Key
dir:'rtl'
})
]
будет доступно в нашем шаблонечерез htmlWebpackPlugin.options.dir
:
index.template.html
<code><!DOCTYPE html>
<html dir="<%=htmlWebpackPlugin.options.dir%>">
<head>
<meta charset="utf-8"/>
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<!-- print a list of all available keys -->
<pre>
<%=JSON.stringify(htmlWebpackPlugin)%>
При этом мы можем переключитьсяк ручному вводу ресурсов, чтобы иметь больше контроля над тем, какие CSS-файлы включать на странице, например myproject.rtl.css
вместо myproject.css
webpack.config.js
plugins: [
new HtmlWebpackPlugin({
.
.
.
// disable automatic injection of assets
inject: false,
})
]
index.template.html
<code><!DOCTYPE html>
<html dir="<%=htmlWebpackPlugin.options.dir%>">
<head>
<meta charset="utf-8"/>
<title><%= htmlWebpackPlugin.options.title %></title>
<!-- manually inject css -->
<%=
Object.keys(htmlWebpackPlugin.files.chunks).map(
key => htmlWebpackPlugin.files.chunks[key].css.map(
css=>`<link href="${htmlWebpackPlugin.options.dir == 'rtl' ?css.replace('.css','.rtl.css'):css}" rel="stylesheet">`)
.join(''))
.join('')
%>
</head>
<body>
<!-- print a list of all available keys -->
<pre>
<%=JSON.stringify(htmlWebpackPlugin)%>
<% = Object.keys (htmlWebpackPlugin.files.chunks) .map (key => `