UNPKG

@mpxjs/webpack-plugin

Version:

mpx compile core

82 lines (70 loc) 1.76 kB
const ModuleDependency = require('webpack/lib/dependencies/ModuleDependency') const makeSerializable = require('webpack/lib/util/makeSerializable') const InitFragment = require('webpack/lib//InitFragment') class CommonJsVariableDependency extends ModuleDependency { constructor (request, name = '') { super(request) this.name = name } serialize (context) { const { write } = context write(this.name) super.serialize(context) } deserialize (context) { const { read } = context this.name = read() super.deserialize(context) } updateHash (hash, context) { hash.update(this.request) hash.update(this.name) super.updateHash(hash, context) } get type () { return 'mpx cjs variable' } get category () { return 'commonjs' } } CommonJsVariableDependency.Template = class CommonJsVariableDependencyTemplate extends ( ModuleDependency.Template ) { apply ( dep, source, { runtimeTemplate, moduleGraph, chunkGraph, runtimeRequirements, initFragments } ) { const importedModule = moduleGraph.getModule(dep) const requireExpr = runtimeTemplate.moduleExports({ module: importedModule, chunkGraph, request: dep.request, weak: dep.weak, runtimeRequirements }) let expr = '/* mpx cjs variable */ ' if (dep.name) expr += 'var ' + dep.name + ' = ' expr += requireExpr + ';\n' initFragments.push( new InitFragment( expr, InitFragment.STAGE_CONSTANTS, 1, dep.request ) ) } } makeSerializable( CommonJsVariableDependency, '@mpxjs/webpack-plugin/lib/dependencies/CommonJsVariableDependency' ) module.exports = CommonJsVariableDependency