UNPKG

@wordpress/readable-js-assets-webpack-plugin

Version:
44 lines (41 loc) 1.19 kB
/** * External dependencies */ const fs = require( 'fs' ); const path = require( 'path' ); class AddReadableJsAssetsWebpackPlugin { extractUnminifiedFiles( compilation ) { const files = Array.from( compilation.chunks ).flatMap( ( chunk ) => Array.from( chunk.files ) ); compilation.unminifiedAssets = files.map( ( file ) => { const asset = compilation.assets[ file ]; const unminifiedFile = file.replace( /\.min\.js$/, '.js' ); return [ unminifiedFile, asset.source() ]; } ); } async writeUnminifiedFiles( compilation ) { for ( const [ file, source ] of compilation.unminifiedAssets ) { await fs.promises.writeFile( path.join( compilation.options.output.path, file ), source.replace( /\r\n/g, '\n' ) ); } } apply( compiler ) { compiler.hooks.compilation.tap( this.constructor.name, ( compilation ) => { compilation.hooks.additionalAssets.tap( this.constructor.name, () => this.extractUnminifiedFiles( compilation ) ); } ); compiler.hooks.afterEmit.tapPromise( this.constructor.name, ( compilation ) => this.writeUnminifiedFiles( compilation ) ); } } module.exports = AddReadableJsAssetsWebpackPlugin;