@@ -10,16 +10,15 @@ function addAttr(compilation, tags, key, val) {
10
10
var value = val ;
11
11
if ( typeof val === "function" ) {
12
12
value = val ( tag , compilation , index ) ;
13
+ } else if ( typeof val === 'object' ) {
14
+ value = JSON . stringify ( val ) ;
13
15
}
14
16
tag . attributes [ key ] = value ;
15
17
} ) ;
16
18
}
17
19
function alterAssetTags ( compilation , htmlPluginData , callback ) {
18
20
var options = assign ( { } , this . options , htmlPluginData . plugin . options && htmlPluginData . plugin . options . attributes ) ;
19
21
forEach ( options , function ( val , key ) {
20
- if ( typeof val !== 'string' && typeof val !== 'function' ) {
21
- return ;
22
- }
23
22
addAttr ( compilation , htmlPluginData . head , key , val ) ;
24
23
addAttr ( compilation , htmlPluginData . body , key , val ) ;
25
24
} ) ;
@@ -37,9 +36,19 @@ function htmlWebpackInjectAttributesPlugin(options) {
37
36
38
37
htmlWebpackInjectAttributesPlugin . prototype . apply = function ( compiler ) {
39
38
var self = this ;
40
- compiler . plugin ( 'compilation' , function ( compilation ) {
41
- compilation . plugin ( 'html-webpack-plugin-alter-asset-tags' , alterAssetTags . bind ( self , compilation ) ) ;
42
- } ) ;
39
+
40
+ if ( compiler . hooks ) {
41
+ compiler . hooks . compilation . tap ( "htmlWebpackInjectAttributesPlugin" , function ( compilation ) {
42
+ compilation
43
+ . hooks
44
+ . htmlWebpackPluginAlterAssetTags
45
+ . tap ( "htmlWebpackInjectAttributesPlugin" , alterAssetTags . bind ( self , compilation ) ) ;
46
+ } ) ;
47
+ } else {
48
+ compiler . plugin ( 'compilation' , function ( compilation ) {
49
+ compilation . plugin ( 'html-webpack-plugin-alter-asset-tags' , alterAssetTags . bind ( self , compilation ) ) ;
50
+ } ) ;
51
+ }
43
52
} ;
44
53
45
54
module . exports = htmlWebpackInjectAttributesPlugin ;
0 commit comments