@@ -521,25 +521,30 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
521521 var filename = outputOptions . filename || "bundle.js" ;
522522 var chunkFilename = outputOptions . chunkFilename || "[id]." + filename . replace ( Template . REGEXP_NAME , "" ) ;
523523 var namedChunkFilename = outputOptions . namedChunkFilename || null ;
524- var hash = new ( require ( "crypto" ) . Hash ) ( "md5" ) ;
524+ var hashFunction = outputOptions . hashFunction ;
525+ var hashDigest = outputOptions . hashDigest ;
526+ var hashDigestLength = outputOptions . hashDigestLength ;
527+ var hash = new ( require ( "crypto" ) . Hash ) ( hashFunction ) ;
525528 this . mainTemplate . updateHash ( hash ) ;
526529 this . chunkTemplate . updateHash ( hash ) ;
527530 this . moduleTemplate . updateHash ( hash ) ;
528531 var i , chunk ;
529532 for ( i = 0 ; i < this . chunks . length ; i ++ ) {
530533 var chunk = this . chunks [ i ] ;
531- var chunkHash = new ( require ( "crypto" ) . Hash ) ( "md5" ) ;
534+ var chunkHash = new ( require ( "crypto" ) . Hash ) ( hashFunction ) ;
532535 chunk . updateHash ( chunkHash ) ;
533536 this . chunkTemplate . updateHash ( chunkHash ) ;
534- chunk . hash = chunkHash . digest ( "hex" ) ;
537+ chunk . hash = chunkHash . digest ( hashDigest ) ;
535538 hash . update ( chunk . hash ) ;
539+ chunk . renderedHash = chunk . hash . substr ( 0 , hashDigestLength ) ;
536540 }
537- this . hash = hash = hash . digest ( "hex" ) ;
541+ hash = hash . digest ( hashDigest ) ;
542+ this . hash = hash . substr ( 0 , hashDigestLength ) ;
538543 for ( i = 0 ; i < this . modules . length ; i ++ ) {
539544 var module = this . modules [ i ] ;
540545 if ( module . assets ) {
541546 Object . keys ( module . assets ) . forEach ( function ( name ) {
542- var file = name . replace ( Template . REGEXP_HASH , hash ) ;
547+ var file = name . replace ( Template . REGEXP_HASH , this . hash ) ;
543548 this . assets [ file ] = module . assets [ name ] ;
544549 this . applyPlugins ( "module-asset" , module , file ) ;
545550 } , this ) ;
@@ -565,8 +570,8 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
565570 }
566571 this . assets [
567572 file = filename
568- . replace ( Template . REGEXP_HASH , hash )
569- . replace ( Template . REGEXP_CHUNKHASH , chunkHash )
573+ . replace ( Template . REGEXP_HASH , this . hash )
574+ . replace ( Template . REGEXP_CHUNKHASH , chunk . renderedHash )
570575 . replace ( Template . REGEXP_ID , chunk . id )
571576 . replace ( Template . REGEXP_NAME , chunk . name || "" )
572577 ] = source ;
@@ -587,15 +592,15 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
587592 this . assets [
588593 file = chunkFilename
589594 . replace ( Template . REGEXP_HASH , hash )
590- . replace ( Template . REGEXP_CHUNKHASH , chunkHash )
595+ . replace ( Template . REGEXP_CHUNKHASH , chunk . renderedHash )
591596 . replace ( Template . REGEXP_ID , chunk . id )
592597 ] = source ;
593598 chunk . files . push ( file ) ;
594599 this . applyPlugins ( "chunk-asset" , chunk , file ) ;
595600 if ( namedChunkFilename && chunk . name ) {
596601 this . assets [
597602 file = namedChunkFilename
598- . replace ( Template . REGEXP_CHUNKHASH , chunkHash )
603+ . replace ( Template . REGEXP_CHUNKHASH , chunk . renderedHash )
599604 . replace ( Template . REGEXP_HASH , hash )
600605 . replace ( Template . REGEXP_ID , chunk . id )
601606 . replace ( Template . REGEXP_NAME , chunk . name || "" )
0 commit comments