Differential D4472 Diff 15963 swh/web/assets/config/webpack-plugins/fix-swh-source-maps-webpack-plugin.js
Changeset View
Changeset View
Standalone View
Standalone View
swh/web/assets/config/webpack-plugins/fix-swh-source-maps-webpack-plugin.js
Show All 13 Lines | |||||
class FixSwhSourceMapsPlugin { | class FixSwhSourceMapsPlugin { | ||||
constructor() { | constructor() { | ||||
this.sourceMapRegexp = /\.map($|\?)/i; | this.sourceMapRegexp = /\.map($|\?)/i; | ||||
} | } | ||||
apply(compiler) { | apply(compiler) { | ||||
compiler.hooks.afterCompile.tap('FixSwhSourceMapsPlugin', compilation => { | compiler.hooks.compilation.tap('FixSwhSourceMapsPlugin', compilation => { | ||||
const {Compilation, sources} = require('webpack'); | |||||
compilation.hooks.processAssets.tap( | |||||
{ | |||||
name: 'FixSwhSourceMapsPlugin', | |||||
stage: Compilation.PROCESS_ASSETS_STAGE_ANALYSE | |||||
}, | |||||
() => { | |||||
Object.keys(compilation.assets).filter(key => { | Object.keys(compilation.assets).filter(key => { | ||||
return this.sourceMapRegexp.test(key); | return this.sourceMapRegexp.test(key); | ||||
}).forEach(key => { | }).forEach(key => { | ||||
let bundleName = key.replace(/^js\//, ''); | let bundleName = key.replace(/^js\//, ''); | ||||
bundleName = bundleName.replace(/^css\//, ''); | bundleName = bundleName.replace(/^css\//, ''); | ||||
let pos = bundleName.indexOf('.'); | let pos = bundleName.indexOf('.'); | ||||
bundleName = bundleName.slice(0, pos); | bundleName = bundleName.slice(0, pos); | ||||
let asset = compilation.assets[key]; | let asset = compilation.assets[key]; | ||||
let source = asset.source().replace(/swh.\[name\]/g, 'swh.' + bundleName); | let source = asset.source().replace(/swh.\[name\]/g, 'swh.' + bundleName); | ||||
compilation.assets[key] = Object.assign(asset, { | compilation.updateAsset(key, new sources.RawSource(source)); | ||||
source: () => { | |||||
return source; | |||||
} | |||||
}); | |||||
}); | }); | ||||
} | |||||
); | |||||
}); | }); | ||||
} | } | ||||
}; | }; | ||||
module.exports = FixSwhSourceMapsPlugin; | module.exports = FixSwhSourceMapsPlugin; |