@@ -6,12 +6,14 @@ const walk = require('acorn/dist/walk')
6
6
const mapValues = require ( 'lodash.mapvalues' )
7
7
const transform = require ( 'lodash.transform' )
8
8
const zlib = require ( 'zlib' )
9
+ const { warn } = require ( '@vue/cli-shared-utils' )
9
10
10
11
exports . analyzeBundle = function analyzeBundle ( bundleStats , assetSources ) {
11
12
// Picking only `*.js` assets from bundle that has non-empty `chunks` array
12
13
const jsAssets = [ ]
13
14
const otherAssets = [ ]
14
15
16
+ // Separate JS assets
15
17
bundleStats . assets . forEach ( asset => {
16
18
if ( asset . name . endsWith ( '.js' ) && asset . chunks && asset . chunks . length ) {
17
19
jsAssets . push ( asset )
@@ -20,25 +22,25 @@ exports.analyzeBundle = function analyzeBundle (bundleStats, assetSources) {
20
22
}
21
23
} )
22
24
23
- // Trying to parse bundle assets and get real module sizes if `bundleDir` is provided
25
+ // Trying to parse bundle assets and get real module sizes
24
26
let bundlesSources = null
25
27
let parsedModules = null
26
28
27
29
bundlesSources = { }
28
30
parsedModules = { }
29
31
30
32
for ( const asset of jsAssets ) {
31
- const content = assetSources . get ( asset . name )
33
+ const source = assetSources . get ( asset . name )
32
34
let bundleInfo
33
35
34
36
try {
35
- bundleInfo = parseBundle ( content )
37
+ bundleInfo = parseBundle ( source )
36
38
} catch ( err ) {
37
39
bundleInfo = null
38
40
}
39
41
40
42
if ( ! bundleInfo ) {
41
- console . warn (
43
+ warn (
42
44
`\nCouldn't parse bundle asset "${ asset . fullPath } ".\n` +
43
45
'Analyzer will use module sizes from stats file.\n'
44
46
)
@@ -51,8 +53,10 @@ exports.analyzeBundle = function analyzeBundle (bundleStats, assetSources) {
51
53
Object . assign ( parsedModules , bundleInfo . modules )
52
54
}
53
55
56
+ // Update sizes
57
+
54
58
bundleStats . modules . forEach ( module => {
55
- const parsedSrc = parsedModules [ module . id ]
59
+ const parsedSrc = parsedModules && parsedModules [ module . id ]
56
60
module . size = {
57
61
stats : module . size
58
62
}
@@ -66,7 +70,7 @@ exports.analyzeBundle = function analyzeBundle (bundleStats, assetSources) {
66
70
} )
67
71
68
72
jsAssets . forEach ( asset => {
69
- const src = bundlesSources [ asset . name ]
73
+ const src = bundlesSources && bundlesSources [ asset . name ]
70
74
asset . size = {
71
75
stats : asset . size
72
76
}
0 commit comments