html-webpack-plugin 4.0.0-alpha.1 → 4.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,8 +19,17 @@
19
19
  <p>Plugin that simplifies creation of HTML files to serve your bundles</p>
20
20
  </div>
21
21
 
22
- <h2 align="center">Install</h2>
22
+ <h2 align="center">Install Beta</h2>
23
23
 
24
+ ```bash
25
+ npm i --save-dev html-webpack-plugin@next
26
+ ```
27
+
28
+ ```bash
29
+ yarn add --dev html-webpack-plugin@next
30
+ ```
31
+
32
+ <h2 align="center">Install Stable</h2>
24
33
 
25
34
  ```bash
26
35
  npm i --save-dev html-webpack-plugin
@@ -31,11 +40,30 @@
31
40
  ```
32
41
 
33
42
 
34
-
35
43
  This is a [webpack](http://webpack.js.org/) plugin that simplifies creation of HTML files to serve your `webpack` bundles. This is especially useful for `webpack` bundles that include a hash in the filename which changes every compilation. You can either let the plugin generate an HTML file for you, supply
36
44
  your own template using `lodash` templates or use your own loader.
37
45
 
38
- ### `Plugins`
46
+ <h2 align="center">Sponsors</h2>
47
+
48
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/0/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/0/avatar.svg"></a>
49
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/1/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/1/avatar.svg"></a>
50
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/2/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/2/avatar.svg"></a>
51
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/3/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/3/avatar.svg"></a>
52
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/4/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/4/avatar.svg"></a>
53
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/5/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/5/avatar.svg"></a>
54
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/6/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/6/avatar.svg"></a>
55
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/7/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/7/avatar.svg"></a>
56
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/8/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/8/avatar.svg"></a>
57
+ <a href="https://opencollective.com/html-webpack-plugin/sponsor/9/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/9/avatar.svg"></a>
58
+
59
+ Thanks for supporting the ongoing improvements to the html-webpack-plugin!
60
+
61
+ <h2 align="center">Zero Config</h2>
62
+
63
+ The `html-webpack-plugin` works without configuration.
64
+ It's a great addition to the [⚙️ webpack-config-plugins](https://github.com/namics/webpack-config-plugins/blob/master/README.md#zero-config-webpack-dev-server-example).
65
+
66
+ <h2 align="center">Plugins</h2>
39
67
 
40
68
  The `html-webpack-plugin` provides [hooks](https://github.com/jantimon/html-webpack-plugin#events) to extend it to your needs. There are already some really powerful plugins which can be integrated with zero configuration
41
69
 
@@ -49,6 +77,7 @@ The `html-webpack-plugin` provides [hooks](https://github.com/jantimon/html-webp
49
77
  * [html-webpack-include-assets-plugin](https://github.com/jharris4/html-webpack-include-assets-plugin) for including lists of js or css file paths (such as those copied by the copy-webpack-plugin).
50
78
  * [script-ext-html-webpack-plugin](https://github.com/numical/script-ext-html-webpack-plugin) to add `async`, `defer` or `module` attributes to your `<script>` elements, or even inline them
51
79
  * [style-ext-html-webpack-plugin](https://github.com/numical/style-ext-html-webpack-plugin) to convert your `<link>`s to external stylesheets into `<style>` elements containing internal CSS
80
+ * [html-webpack-injector](https://github.com/thearchitgarg/html-webpack-injector) to inject chunks in `head` or `body` (different locations ) of same html document.
52
81
  * [resource-hints-webpack-plugin](https://github.com/jantimon/resource-hints-webpack-plugin) to add resource hints for faster initial page loads using `<link rel='preload'>` and `<link rel='prefetch'>`
53
82
  * [preload-webpack-plugin](https://github.com/GoogleChrome/preload-webpack-plugin) for automatically wiring up asynchronous (and other types) of JavaScript chunks using `<link rel='preload'>` helping with lazy-loading
54
83
  * [link-media-html-webpack-plugin](https://github.com/yaycmyk/link-media-html-webpack-plugin) allows for injected stylesheet `<link />` tags to have their media attribute set automatically; useful for providing specific desktop/mobile/print etc. stylesheets that the browser will conditionally download
@@ -56,7 +85,10 @@ The `html-webpack-plugin` provides [hooks](https://github.com/jantimon/html-webp
56
85
  * [html-webpack-inline-style-plugin](https://github.com/djaax/html-webpack-inline-style-plugin) for inlining styles to HTML elements using [juice](https://github.com/Automattic/juice). Useful for email generation automatisation.
57
86
  * [html-webpack-exclude-empty-assets-plugin](https://github.com/KnisterPeter/html-webpack-exclude-empty-assets-plugin) removes empty assets from being added to the html. This fixes some problems with extract-text-plugin with webpack 4.
58
87
  * [webpack-concat-plugin](https://github.com/hxlniada/webpack-concat-plugin) for concat and uglify files that needn't to be webpack bundles(for legacy files) and inject to html-webpack-plugin.
59
-
88
+ * [html-webpack-link-type-plugin](https://github.com/steadyapp/html-webpack-link-type-plugin) adds a configurable mimetype to resources injected as links (such as adding type="text/css" to external stylesheets) for compatibility with "strict mode".
89
+ * [csp-html-webpack-plugin](https://github.com/slackhq/csp-html-webpack-plugin) to add [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) meta tags to the HTML output
90
+ * [webpack-nomodule-plugin](https://github.com/swimmadude66/webpack-nomodule-plugin) allows you to add a `nomodule` attribute to specific injected scripts, which prevents the scripts from being loaded by newer browsers. Good for limiting loads of polyfills.
91
+
60
92
 
61
93
  <h2 align="center">Usage</h2>
62
94
 
@@ -97,7 +129,7 @@ This will generate a file `dist/index.html` containing the following
97
129
 
98
130
  If you have multiple `webpack` entry points, they will all be included with `script` tags in the generated HTML.
99
131
 
100
- If you have any CSS assets in webpack's output (for example, CSS extracted with the [ExtractTextPlugin](https://github.com/webpack/extract-text-webpack-plugin))
132
+ If you have any CSS assets in webpack's output (for example, CSS extracted with the [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin))
101
133
  then these will be included with `<link>` tags in the HTML head.
102
134
 
103
135
  If you have plugins that make use of it, `html-webpack-plugin` should be ordered first before any of the integrated plugins.
@@ -109,21 +141,22 @@ Allowed values are as follows
109
141
 
110
142
  |Name|Type|Default|Description|
111
143
  |:--:|:--:|:-----:|:----------|
112
- |**[`title`](#)**|`{String}`|`Webpack App`|The title to use for the generated HTML document|
113
- |**[`filename`](#)**|`{String}`|`'index.html'`|The file to write the HTML to. Defaults to `index.html`. You can specify a subdirectory here too (eg: `assets/admin.html`)|
114
- |**[`template`](#)**|`{String}`|``|`webpack` require path to the template. Please see the [docs](https://github.com/jantimon/html-webpack-plugin/blob/master/docs/template-option.md) for details|
115
- |**[`templateParameters`](#)**|`{Boolean\|Object\|Function}`|``| Allows to overwrite the parameters used in the template |
116
- |**[`inject`](#)**|`{Boolean\|String}`|`true`|`true \|\| 'head' \|\| 'body' \|\| false` Inject all assets into the given `template` or `templateContent`. When passing `true` or `'body'` all javascript resources will be placed at the bottom of the body element. `'head'` will place the scripts in the head element|
117
- |**[`favicon`](#)**|`{String}`|``|Adds the given favicon path to the output HTML|
118
- |**[`meta`](#)**|`{Object}`|`{}`|Allows to inject `meta`-tags. E.g. `meta: {viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'}`|
119
- |**[`minify`](#)**|`{Boolean\|Object}`|`false`|Pass [html-minifier](https://github.com/kangax/html-minifier#options-quick-reference)'s options as object to minify the output|
120
- |**[`hash`](#)**|`{Boolean}`|`false`|If `true` then append a unique `webpack` compilation hash to all included scripts and CSS files. This is useful for cache busting|
121
- |**[`cache`](#)**|`{Boolean}`|`true`|Emit the file only if it was changed|
122
- |**[`showErrors`](#)**|`{Boolean}`|`true`|Errors details will be written into the HTML page|
123
- |**[`chunks`](#)**|`{?}`|`?`|Allows you to add only some chunks (e.g only the unit-test chunk)|
144
+ |**`title`**|`{String}`|`Webpack App`|The title to use for the generated HTML document|
145
+ |**`filename`**|`{String}`|`'index.html'`|The file to write the HTML to. Defaults to `index.html`. You can specify a subdirectory here too (eg: `assets/admin.html`)|
146
+ |**`template`**|`{String}`|``|`webpack` relative or absolute path to the template. By default it will use `src/index.ejs` if it exists. Please see the [docs](https://github.com/jantimon/html-webpack-plugin/blob/master/docs/template-option.md) for details|
147
+ |**`templateParameters`**|`{Boolean\|Object\|Function}`|``| Allows to overwrite the parameters used in the template - see [example](https://github.com/jantimon/html-webpack-plugin/tree/master/examples/template-parameters) |
148
+ |**`inject`**|`{Boolean\|String}`|`true`|`true \|\| 'head' \|\| 'body' \|\| false` Inject all assets into the given `template` or `templateContent`. When passing `true` or `'body'` all javascript resources will be placed at the bottom of the body element. `'head'` will place the scripts in the head element - see the [inject:false example](https://github.com/jantimon/html-webpack-plugin/tree/master/examples/custom-insertion-position)|
149
+ |**`favicon`**|`{String}`|``|Adds the given favicon path to the output HTML|
150
+ |**`meta`**|`{Object}`|`{}`|Allows to inject `meta`-tags. E.g. `meta: {viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'}`|
151
+ |**`base`**|`{Object\|String\|false}`|`false`|Inject a [`base`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base) tag. E.g. `base: "https://example.com/path/page.html`|
152
+ |**`minify`**|`{Boolean\|Object}`|`true` if `mode` is `'production'`, otherwise `false`|Controls if and in what ways the output should be minified. See [minification](#minification) below for more details.|
153
+ |**`hash`**|`{Boolean}`|`false`|If `true` then append a unique `webpack` compilation hash to all included scripts and CSS files. This is useful for cache busting|
154
+ |**`cache`**|`{Boolean}`|`true`|Emit the file only if it was changed|
155
+ |**`showErrors`**|`{Boolean}`|`true`|Errors details will be written into the HTML page|
156
+ |**`chunks`**|`{?}`|`?`|Allows you to add only some chunks (e.g only the unit-test chunk)|
124
157
  |**[`chunksSortMode`](#plugins)**|`{String\|Function}`|`auto`|Allows to control how chunks should be sorted before they are included to the HTML. Allowed values are `'none' \| 'auto' \| 'dependency' \| 'manual' \| {Function}`|
125
- |**[`excludeChunks`](#)**|`{Array.<string>}`|``|Allows you to skip some chunks (e.g don't add the unit-test chunk)|
126
- |**[`xhtml`](#)**|`{Boolean}`|`false`|If `true` render the `link` tags as self-closing (XHTML compliant)|
158
+ |**`excludeChunks`**|`{Array.<string>}`|``|Allows you to skip some chunks (e.g don't add the unit-test chunk)|
159
+ |**`xhtml`**|`{Boolean}`|`false`|If `true` render the `link` tags as self-closing (XHTML compliant)|
127
160
 
128
161
  Here's an example webpack config illustrating how to use these options
129
162
 
@@ -144,7 +177,7 @@ Here's an example webpack config illustrating how to use these options
144
177
  }
145
178
  ```
146
179
 
147
- ### `Generating Multiple HTML Files`
180
+ ### Generating Multiple HTML Files
148
181
 
149
182
  To generate more than one HTML file, declare the plugin more than
150
183
  once in your plugins array
@@ -167,18 +200,20 @@ once in your plugins array
167
200
  }
168
201
  ```
169
202
 
170
- ### `Writing Your Own Templates`
203
+ ### Writing Your Own Templates
171
204
 
172
205
  If the default generated HTML doesn't meet your needs you can supply
173
206
  your own template. The easiest way is to use the `template` option and pass a custom HTML file.
174
207
  The html-webpack-plugin will automatically inject all necessary CSS, JS, manifest
175
208
  and favicon files into the markup.
176
209
 
210
+ Details of other template loaders are [documented here](https://github.com/jantimon/html-webpack-plugin/blob/master/docs/template-option.md).
211
+
177
212
  ```js
178
213
  plugins: [
179
214
  new HtmlWebpackPlugin({
180
215
  title: 'Custom template',
181
- // Load a custom template (lodash by default see the FAQ for details)
216
+ // Load a custom template (lodash by default)
182
217
  template: 'index.html'
183
218
  })
184
219
  ]
@@ -198,7 +233,7 @@ plugins: [
198
233
  ```
199
234
 
200
235
  If you already have a template loader, you can use it to parse the template.
201
- Please note that this will also happen if you specifiy the html-loader and use `.html` file as template.
236
+ Please note that this will also happen if you specify the html-loader and use `.html` file as template.
202
237
 
203
238
  **webpack.config.js**
204
239
  ```js
@@ -261,7 +296,7 @@ The following variables are available in the template:
261
296
  (see [the inline template example](examples/inline/template.pug)).
262
297
 
263
298
 
264
- ### `Filtering Chunks`
299
+ ### Filtering Chunks
265
300
 
266
301
  To include only certain chunks you can limit the chunks being used
267
302
 
@@ -285,7 +320,133 @@ plugins: [
285
320
  ]
286
321
  ```
287
322
 
288
- ### `Events`
323
+ ### Minification
324
+
325
+ If the `minify` option is set to `true` (the default when webpack's `mode` is `'production'`),
326
+ the generated HTML will be minified using [html-minifier-terser](https://github.com/DanielRuf/html-minifier-terser)
327
+ and the following options:
328
+
329
+ ```js
330
+ {
331
+ collapseWhitespace: true,
332
+ removeComments: true,
333
+ removeRedundantAttributes: true,
334
+ removeScriptTypeAttributes: true,
335
+ removeStyleLinkTypeAttributes: true,
336
+ useShortDoctype: true
337
+ }
338
+ ```
339
+
340
+ To use custom [html-minifier options](https://github.com/DanielRuf/html-minifier-terser#options-quick-reference)
341
+ pass an object to `minify` instead. This object will not be merged with the defaults above.
342
+
343
+ To disable minification during production mode set the `minify` option to `false`.
344
+
345
+ ### Meta Tags
346
+
347
+ If the `meta` option is set the html-webpack-plugin will inject meta tags.
348
+ For the default template the html-webpack-plugin will already provide a default for the `viewport` meta tag.
349
+
350
+ Please take a look at this well maintained list of almost all [possible meta tags](https://github.com/joshbuchea/HEAD#meta).
351
+
352
+ #### name/content meta tags
353
+
354
+ Most meta tags are configured by setting a `name` and a `content` attribute.
355
+ To add those use a key/value pair:
356
+
357
+ **webpack.config.js**
358
+ ```js
359
+ plugins: [
360
+ new HtmlWebpackPlugin({
361
+ 'meta': {
362
+ 'viewport': 'width=device-width, initial-scale=1, shrink-to-fit=no',
363
+ // Will generate: <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
364
+ 'theme-color': '#4285f4'
365
+ // Will generate: <meta name="theme-color" content="#4285f4">
366
+ }
367
+ })
368
+ ]
369
+ ```
370
+
371
+ #### Simulate http response headers
372
+
373
+ The **http-equiv** attribute is essentially used to simulate a HTTP response header.
374
+ This format is supported using an object notation which allows you to add any attribute:
375
+
376
+ **webpack.config.js**
377
+ ```js
378
+ plugins: [
379
+ new HtmlWebpackPlugin({
380
+ 'meta': {
381
+ 'Content-Security-Policy': { 'http-equiv': 'Content-Security-Policy', 'content': 'default-src https:' },
382
+ // Will generate: <meta http-equiv="Content-Security-Policy" content="default-src https:">
383
+ // Which equals to the following http header: `Content-Security-Policy: default-src https:`
384
+ 'set-cookie': { 'http-equiv': 'set-cookie', content: 'name=value; expires=date; path=url' },
385
+ // Will generate: <meta http-equiv="set-cookie" content="value; expires=date; path=url">
386
+ // Which equals to the following http header: `set-cookie: value; expires=date; path=url`
387
+ }
388
+ })
389
+ ]
390
+ ```
391
+
392
+ ### Base Tag
393
+
394
+ When the `base` option is used,
395
+ html-webpack-plugin will inject a [base tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base).
396
+ By default, a base tag will not be injected.
397
+
398
+ The following two are identical and will both insert `<base href="http://example.com/some/page.html">`:
399
+
400
+ ```js
401
+ new HtmlWebpackPlugin({
402
+ 'base': 'http://example.com/some/page.html'
403
+ })
404
+ ```
405
+
406
+ ```js
407
+ new HtmlWebpackPlugin({
408
+ 'base': { 'href': 'http://example.com/some/page.html' }
409
+ })
410
+ ```
411
+
412
+ The `target` can be specified with the corresponding key:
413
+
414
+ ```js
415
+ new HtmlWebpackPlugin({
416
+ 'base': {
417
+ 'href': 'http://example.com/some/page.html',
418
+ 'target': '_blank'
419
+ }
420
+ })
421
+ ```
422
+
423
+ which will inject the element `<base href="http://example.com/some/page.html" target="_blank">`.
424
+
425
+ ### Long Term Caching
426
+
427
+ For long term caching add `contenthash/templatehash` to the filename.
428
+
429
+ **Example:**
430
+
431
+ ```js
432
+ plugins: [
433
+ new HtmlWebpackPlugin({
434
+ filename: 'index.[contenthash].html'
435
+ })
436
+ ]
437
+ ```
438
+
439
+ `contenthash/templatehash` is the hash of the content of the output file.
440
+
441
+ Optionally, You can configure like `[<hashType>:contenthash:<digestType>:<length>]`
442
+
443
+ * `hashType` - one of `sha1`, `md5`, `sha256`, `sha512` or any other node.js supported hash type
444
+ * `digestType` - one of `hex`, `base26`, `base32`, `base36`, `base49`, `base52`, `base58`, `base62`, `base64`
445
+ * `maxlength` - maximum length of the generated hash in chars
446
+
447
+ **Defaults:** `[md5:contenthash:hex:9999]`
448
+
449
+ ### Events
289
450
 
290
451
  To allow other [plugins](https://github.com/webpack/docs/wiki/plugins) to alter the HTML this plugin executes
291
452
  [tapable](https://github.com/webpack/tapable/tree/master) hooks.
@@ -301,8 +462,8 @@ about which values are passed.
301
462
  AsyncSeriesWaterfallHook<{
302
463
  assets: {
303
464
  publicPath: string,
304
- js: Array<{entryName: string, path: string}>,
305
- css: Array<{entryName: string, path: string}>,
465
+ js: Array<{string}>,
466
+ css: Array<{string}>,
306
467
  favicon?: string | undefined,
307
468
  manifest?: string | undefined
308
469
  },
@@ -367,16 +528,22 @@ about which values are passed.
367
528
  }>
368
529
  ```
369
530
 
370
- Example implementation: [html-webpack-harddisk-plugin](https://github.com/jantimon/html-webpack-harddisk-plugin)
531
+ Example implementation: [webpack-subresource-integrity](https://www.npmjs.com/package/webpack-subresource-integrity)
371
532
 
372
533
  **plugin.js**
373
534
  ```js
535
+ // If your plugin is direct dependent to the html webpack plugin:
536
+ const HtmlWebpackPlugin = require('html-webpack-plugin');
537
+ // If your plugin is using html-webpack-plugin as an optional dependency
538
+ // you can use https://github.com/tallesl/node-safe-require instead:
539
+ const HtmlWebpackPlugin = require('safe-require')('html-webpack-plugin');
540
+
374
541
  class MyPlugin {
375
542
  apply (compiler) {
376
543
  compiler.hooks.compilation.tap('MyPlugin', (compilation) => {
377
544
  console.log('The compiler is starting a new compilation...')
378
545
 
379
- // Staic Plugin interface |compilation |HOOK NAME | register listener
546
+ // Static Plugin interface |compilation |HOOK NAME | register listener
380
547
  HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tapAsync(
381
548
  'MyPlugin', // <-- Set a meaningful name here for stacktraces
382
549
  (data, cb) => {
@@ -424,33 +591,10 @@ Note that the callback must be passed the HtmlWebpackPluginData in order to pass
424
591
  </table>
425
592
 
426
593
 
427
- [npm]: https://img.shields.io/npm/v/html-webpack-plugin.svg
428
- [npm-url]: https://npmjs.com/package/html-webpack-plugin
429
-
430
- [node]: https://img.shields.io/node/v/html-webpack-plugin.svg
431
- [node-url]: https://nodejs.org
432
-
433
- [deps]: https://david-dm.org/jantimon/html-webpack-plugin.svg
434
- [deps-url]: https://david-dm.org/jantimon/html-webpack-plugin
435
-
436
- [tests]: http://img.shields.io/travis/jantimon/html-webpack-plugin.svg
437
- [tests-url]: https://travis-ci.org/jantimon/html-webpack-plugin
438
-
439
-
440
- ## Contributors
441
-
442
- This project exists thanks to all the people who contribute.
443
-
444
- You're free to contribute to this project by submitting [issues](https://github.com/jantimon/html-webpack-plugin/issues) and/or [pull requests](https://github.com/jantimon/html-webpack-plugin/pulls). This project is test-driven, so keep in mind that every change and new feature should be covered by tests.
445
-
446
- This project uses the [semistandard code style](https://github.com/Flet/semistandard).
447
-
448
- <a href="https://github.com/jantimon/html-webpack-plugin/graphs/contributors"><img src="https://opencollective.com/html-webpack-plugin/contributors.svg?width=890&button=false" /></a>
449
-
450
-
451
594
  ## Backers
452
595
 
453
- Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/html-webpack-plugin#backer)
596
+ Thank you to all our backers!
597
+ If you want to support the project as well [become a sponsor](https://opencollective.com/html-webpack-plugin#sponsor) or a [a backer](https://opencollective.com/html-webpack-plugin#backer).
454
598
 
455
599
  <a href="https://opencollective.com/html-webpack-plugin/backer/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/backer/0/avatar.svg?requireActive=false"></a>
456
600
  <a href="https://opencollective.com/html-webpack-plugin/backer/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/backer/1/avatar.svg?requireActive=false"></a>
@@ -463,19 +607,26 @@ Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/
463
607
  <a href="https://opencollective.com/html-webpack-plugin/backer/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/backer/8/avatar.svg?requireActive=false"></a>
464
608
  <a href="https://opencollective.com/html-webpack-plugin/backer/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/backer/9/avatar.svg?requireActive=false"></a>
465
609
 
466
- ## Sponsors
467
610
 
468
- Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor](https://opencollective.com/html-webpack-plugin#sponsor)
611
+ ## Contributors
469
612
 
470
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/0/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/0/avatar.svg"></a>
471
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/1/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/1/avatar.svg"></a>
472
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/2/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/2/avatar.svg"></a>
473
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/3/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/3/avatar.svg"></a>
474
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/4/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/4/avatar.svg"></a>
475
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/5/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/5/avatar.svg"></a>
476
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/6/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/6/avatar.svg"></a>
477
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/7/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/7/avatar.svg"></a>
478
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/8/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/8/avatar.svg"></a>
479
- <a href="https://opencollective.com/html-webpack-plugin/sponsor/9/website" target="_blank"><img src="https://opencollective.com/html-webpack-plugin/sponsor/9/avatar.svg"></a>
613
+ This project exists thanks to all the people who contribute.
480
614
 
615
+ You're free to contribute to this project by submitting [issues](https://github.com/jantimon/html-webpack-plugin/issues) and/or [pull requests](https://github.com/jantimon/html-webpack-plugin/pulls). This project is test-driven, so keep in mind that every change and new feature should be covered by tests.
616
+
617
+ This project uses the [semistandard code style](https://github.com/Flet/semistandard).
618
+
619
+ <a href="https://github.com/jantimon/html-webpack-plugin/graphs/contributors"><img src="https://opencollective.com/html-webpack-plugin/contributors.svg?width=890&button=false" /></a>
620
+
621
+
622
+ [npm]: https://img.shields.io/npm/v/html-webpack-plugin.svg
623
+ [npm-url]: https://npmjs.com/package/html-webpack-plugin
481
624
 
625
+ [node]: https://img.shields.io/node/v/html-webpack-plugin.svg
626
+ [node-url]: https://nodejs.org
627
+
628
+ [deps]: https://david-dm.org/jantimon/html-webpack-plugin.svg
629
+ [deps-url]: https://david-dm.org/jantimon/html-webpack-plugin
630
+
631
+ [tests]: http://img.shields.io/travis/jantimon/html-webpack-plugin.svg
632
+ [tests-url]: https://travis-ci.org/jantimon/html-webpack-plugin