UNPKG

1.26 kBJavaScriptView Raw
1const path = require('path')
2
3/**
4 * 从 Webpack compilation 数据中生成文件对应表 (Filemap)
5 * @param {Object} compilation
6 * @param {String} [dirRelative]
7 * @returns {Object} 文件对应表 (Filemap)
8 */
9module.exports = (compilation, dirRelative) => {
10 if (typeof compilation !== 'object') return undefined
11
12 const filemap = {}
13 const stats = (typeof compilation.getStats === 'function')
14 ? compilation.getStats()
15 : compilation
16
17 for (let id in stats.compilation.chunks) {
18 const o = stats.compilation.chunks[id]
19 if (typeof o.name === 'undefined' || o.name === null) continue
20 if (Array.isArray(o.files)) {
21 o.files
22 .filter(filename => !/\.(js|css)\.map$/i.test(filename))
23 .forEach(filename => {
24 const extname = path.extname(filename)
25 const file = o.name + extname
26 if (typeof filemap[file] !== 'string')
27 filemap[file] = process.env.WEBPACK_BUILD_ENV === 'dev'
28 ? filename
29 : (dirRelative ? dirRelative + '/' : '') + filename
30 })
31 }
32 }
33 return filemap
34}