@@ -5,11 +5,12 @@ const jsParser = require('uglify-js').parser;
5
5
const jsUglify = require ( 'uglify-js' ) . uglify ;
6
6
const cssUglify = require ( 'uglifycss' ) ;
7
7
8
+ const HASH_PLACEHOLDER = '[hashPlaceholder]' ;
9
+
8
10
process . on ( 'message' , function ( m ) {
9
11
const opt = m . opt ;
10
12
const cwd = m . cwd ;
11
13
const assetName = m . assetName ;
12
- const nameReg = / ^ ( [ ^ \@ ] * ) \@ ? ( [ ^ \. ] + ) ( \. ( j s | c s s ) ) $ / ;
13
14
let replacedAssets = [ ] ;
14
15
15
16
if ( / \. j s $ / . test ( assetName ) || / \. c s s $ / . test ( assetName ) ) {
@@ -34,14 +35,12 @@ process.on('message', function(m) {
34
35
fs . writeFileSync ( path . resolve ( cwd , assetName ) , minifiedCode , { encoding : 'utf8' } ) ;
35
36
36
37
// 重新生成版本号, webpack 打的样式文件 hash 会根据所在目录不同而不同,造成 beta/prd 环境下版本号不一致
37
- var matchInfo = assetName . match ( nameReg ) ,
38
- version = matchInfo [ 2 ] ;
39
-
40
- const nextVersion = md5 ( minifiedCode ) ;
41
- const nextName = assetName . replace ( version , nextVersion ) ;
42
- fs . renameSync ( path . resolve ( cwd , assetName ) , path . resolve ( cwd , nextName ) ) ;
43
-
44
- replacedAssets = [ assetName , nextName ] ;
38
+ if ( assetName . indexOf ( HASH_PLACEHOLDER ) > - 1 ) {
39
+ const version = md5 ( minifiedCode ) . slice ( 0 , 16 ) ;
40
+ const nextName = assetName . replace ( HASH_PLACEHOLDER , version ) ;
41
+ fs . renameSync ( path . resolve ( cwd , assetName ) , path . resolve ( cwd , nextName ) ) ;
42
+ replacedAssets = [ assetName , nextName ] ;
43
+ }
45
44
}
46
45
}
47
46
0 commit comments