html-webpack-plugin 4.0.0-alpha.1 → 4.0.0-alpha.2
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 +2 -2
- package/index.js +35 -26
- package/lib/hooks.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -301,8 +301,8 @@ about which values are passed.
|
|
|
301
301
|
AsyncSeriesWaterfallHook<{
|
|
302
302
|
assets: {
|
|
303
303
|
publicPath: string,
|
|
304
|
-
js: Array<{
|
|
305
|
-
css: Array<{
|
|
304
|
+
js: Array<{string}>,
|
|
305
|
+
css: Array<{string}>,
|
|
306
306
|
favicon?: string | undefined,
|
|
307
307
|
manifest?: string | undefined
|
|
308
308
|
},
|
package/index.js
CHANGED
|
@@ -327,8 +327,8 @@ class HtmlWebpackPlugin {
|
|
|
327
327
|
* @param {WebpackCompilation} compilation
|
|
328
328
|
* @param {{
|
|
329
329
|
publicPath: string,
|
|
330
|
-
js: Array<
|
|
331
|
-
css: Array<
|
|
330
|
+
js: Array<string>,
|
|
331
|
+
css: Array<string>,
|
|
332
332
|
manifest?: string,
|
|
333
333
|
favicon?: string
|
|
334
334
|
}} assets
|
|
@@ -357,8 +357,8 @@ class HtmlWebpackPlugin {
|
|
|
357
357
|
* @param {(templatePArameters) => string | Promise<string>} templateFunction
|
|
358
358
|
* @param {{
|
|
359
359
|
publicPath: string,
|
|
360
|
-
js: Array<
|
|
361
|
-
css: Array<
|
|
360
|
+
js: Array<string>,
|
|
361
|
+
css: Array<string>,
|
|
362
362
|
manifest?: string,
|
|
363
363
|
favicon?: string
|
|
364
364
|
}} assets
|
|
@@ -488,14 +488,14 @@ class HtmlWebpackPlugin {
|
|
|
488
488
|
*
|
|
489
489
|
* @param {{
|
|
490
490
|
publicPath: string,
|
|
491
|
-
js: Array<
|
|
492
|
-
css: Array<
|
|
491
|
+
js: Array<string>,
|
|
492
|
+
css: Array<string>,
|
|
493
493
|
manifest?: string,
|
|
494
494
|
favicon?: string
|
|
495
495
|
}} assets
|
|
496
496
|
*/
|
|
497
497
|
isHotUpdateCompilation (assets) {
|
|
498
|
-
return assets.js.length && assets.js.every((
|
|
498
|
+
return assets.js.length && assets.js.every((assetPath) => /\.hot-update\.js$/.test(assetPath));
|
|
499
499
|
}
|
|
500
500
|
|
|
501
501
|
/**
|
|
@@ -505,8 +505,8 @@ class HtmlWebpackPlugin {
|
|
|
505
505
|
* @param {string[]} entryNames
|
|
506
506
|
* @returns {{
|
|
507
507
|
publicPath: string,
|
|
508
|
-
js: Array<
|
|
509
|
-
css: Array<
|
|
508
|
+
js: Array<string>,
|
|
509
|
+
css: Array<string>,
|
|
510
510
|
manifest?: string,
|
|
511
511
|
favicon?: string
|
|
512
512
|
}}
|
|
@@ -533,8 +533,8 @@ class HtmlWebpackPlugin {
|
|
|
533
533
|
/**
|
|
534
534
|
* @type {{
|
|
535
535
|
publicPath: string,
|
|
536
|
-
js: Array<
|
|
537
|
-
css: Array<
|
|
536
|
+
js: Array<string>,
|
|
537
|
+
css: Array<string>,
|
|
538
538
|
manifest?: string,
|
|
539
539
|
favicon?: string
|
|
540
540
|
}}
|
|
@@ -558,6 +558,7 @@ class HtmlWebpackPlugin {
|
|
|
558
558
|
}
|
|
559
559
|
|
|
560
560
|
// Extract paths to .js and .css files from the current compilation
|
|
561
|
+
const entryPointPublicPathMap = {};
|
|
561
562
|
const extensionRegexp = /\.(css|js)(\?|$)/;
|
|
562
563
|
for (let i = 0; i < entryNames.length; i++) {
|
|
563
564
|
const entryName = entryNames[i];
|
|
@@ -573,18 +574,21 @@ class HtmlWebpackPlugin {
|
|
|
573
574
|
: entryPointPublicPath;
|
|
574
575
|
});
|
|
575
576
|
|
|
576
|
-
entryPointPublicPaths.forEach((
|
|
577
|
-
const extMatch = extensionRegexp.exec(
|
|
577
|
+
entryPointPublicPaths.forEach((entryPointPublicPath) => {
|
|
578
|
+
const extMatch = extensionRegexp.exec(entryPointPublicPath);
|
|
578
579
|
// Skip if the public path is not a .css or .js file
|
|
579
580
|
if (!extMatch) {
|
|
580
581
|
return;
|
|
581
582
|
}
|
|
583
|
+
// Skip if this file is already known
|
|
584
|
+
// (e.g. because of common chunk optimizations)
|
|
585
|
+
if (entryPointPublicPathMap[entryPointPublicPath]) {
|
|
586
|
+
return;
|
|
587
|
+
}
|
|
588
|
+
entryPointPublicPathMap[entryPointPublicPath] = true;
|
|
582
589
|
// ext will contain .js or .css
|
|
583
590
|
const ext = extMatch[1];
|
|
584
|
-
assets[ext].push(
|
|
585
|
-
entryName: entryName,
|
|
586
|
-
path: entryPointPublicPaths
|
|
587
|
-
});
|
|
591
|
+
assets[ext].push(entryPointPublicPath);
|
|
588
592
|
});
|
|
589
593
|
}
|
|
590
594
|
return assets;
|
|
@@ -650,32 +654,30 @@ class HtmlWebpackPlugin {
|
|
|
650
654
|
|
|
651
655
|
/**
|
|
652
656
|
* Generate all tags script for the given file paths
|
|
653
|
-
* @param {Array<
|
|
657
|
+
* @param {Array<string>} jsAssets
|
|
654
658
|
* @returns {Array<HtmlTagObject>}
|
|
655
659
|
*/
|
|
656
660
|
generatedScriptTags (jsAssets) {
|
|
657
661
|
return jsAssets.map(scriptAsset => ({
|
|
658
662
|
tagName: 'script',
|
|
659
663
|
voidTag: false,
|
|
660
|
-
entry: scriptAsset.entryName,
|
|
661
664
|
attributes: {
|
|
662
|
-
src: scriptAsset
|
|
665
|
+
src: scriptAsset
|
|
663
666
|
}
|
|
664
667
|
}));
|
|
665
668
|
}
|
|
666
669
|
|
|
667
670
|
/**
|
|
668
671
|
* Generate all style tags for the given file paths
|
|
669
|
-
* @param {Array<
|
|
672
|
+
* @param {Array<string>} cssAssets
|
|
670
673
|
* @returns {Array<HtmlTagObject>}
|
|
671
674
|
*/
|
|
672
675
|
generateStyleTags (cssAssets) {
|
|
673
676
|
return cssAssets.map(styleAsset => ({
|
|
674
677
|
tagName: 'link',
|
|
675
678
|
voidTag: true,
|
|
676
|
-
entry: styleAsset.entryName,
|
|
677
679
|
attributes: {
|
|
678
|
-
href: styleAsset
|
|
680
|
+
href: styleAsset,
|
|
679
681
|
rel: 'stylesheet'
|
|
680
682
|
}
|
|
681
683
|
}));
|
|
@@ -879,8 +881,8 @@ class HtmlWebpackPlugin {
|
|
|
879
881
|
* @param {WebpackCompilation} compilation
|
|
880
882
|
* @param {{
|
|
881
883
|
publicPath: string,
|
|
882
|
-
js: Array<
|
|
883
|
-
css: Array<
|
|
884
|
+
js: Array<string>,
|
|
885
|
+
css: Array<string>,
|
|
884
886
|
manifest?: string,
|
|
885
887
|
favicon?: string
|
|
886
888
|
}} assets
|
|
@@ -892,6 +894,13 @@ class HtmlWebpackPlugin {
|
|
|
892
894
|
* @returns {HtmlWebpackPluginTemplateParameter}
|
|
893
895
|
*/
|
|
894
896
|
function templateParametersGenerator (compilation, assets, assetTags, options) {
|
|
897
|
+
const xhtml = options.xhtml;
|
|
898
|
+
assetTags.headTags.toString = function () {
|
|
899
|
+
return this.map((assetTagObject) => htmlTagObjectToString(assetTagObject, xhtml)).join('');
|
|
900
|
+
};
|
|
901
|
+
assetTags.bodyTags.toString = function () {
|
|
902
|
+
return this.map((assetTagObject) => htmlTagObjectToString(assetTagObject, xhtml)).join('');
|
|
903
|
+
};
|
|
895
904
|
return {
|
|
896
905
|
compilation: compilation,
|
|
897
906
|
webpackConfig: compilation.options,
|
|
@@ -912,7 +921,7 @@ HtmlWebpackPlugin.version = 4;
|
|
|
912
921
|
/**
|
|
913
922
|
* A static helper to get the hooks for this plugin
|
|
914
923
|
*
|
|
915
|
-
* Usage: HtmlWebpackPlugin.
|
|
924
|
+
* Usage: HtmlWebpackPlugin.getHooks(compilation).HOOK_NAME.tapAsync('YourPluginName', () => { ... });
|
|
916
925
|
*/
|
|
917
926
|
HtmlWebpackPlugin.getHooks = getHtmlWebpackPluginHooks;
|
|
918
927
|
HtmlWebpackPlugin.createHtmlTagObject = createHtmlTagObject;
|
package/lib/hooks.js
CHANGED
|
@@ -20,8 +20,8 @@ const AsyncSeriesWaterfallHook = require('tapable').AsyncSeriesWaterfallHook;
|
|
|
20
20
|
AsyncSeriesWaterfallHook<{
|
|
21
21
|
assets: {
|
|
22
22
|
publicPath: string,
|
|
23
|
-
js: Array<
|
|
24
|
-
css: Array<
|
|
23
|
+
js: Array<string>,
|
|
24
|
+
css: Array<string>,
|
|
25
25
|
favicon?: string | undefined,
|
|
26
26
|
manifest?: string | undefined
|
|
27
27
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "html-webpack-plugin",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Simplifies creation of HTML files to serve your webpack bundles",
|
|
6
6
|
"author": "Charles Blaxland <charles.blaxland@gmail.com> (https://github.com/ampedandwired)",
|