UNPKG

1.18 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 = compilation.getStats()
14
15 for (let id in stats.compilation.chunks) {
16 const o = stats.compilation.chunks[id]
17 if (typeof o.name === 'undefined' || o.name === null) continue
18 if (Array.isArray(o.files)) {
19 o.files
20 .filter(filename => !/\.(js|css)\.map$/i.test(filename))
21 .forEach(filename => {
22 const extname = path.extname(filename)
23 const file = o.name + extname
24 if (typeof filemap[file] !== 'string')
25 filemap[file] = process.env.WEBPACK_BUILD_ENV === 'dev'
26 ? filename
27 : (dirRelative ? dirRelative + '/' : '') + filename
28 })
29 }
30 }
31
32 return filemap
33}