diff --git a/CHANGELOG.md b/CHANGELOG.md index e6fd3b07..95fc3796 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ _Note: Gaps between patch versions are faulty, broken or test releases._ ## UNRELEASED + * **Improvement** + * Added support for exports.modules when webpack target = node + ## 3.7.0 diff --git a/src/parseUtils.js b/src/parseUtils.js index b4dfeff2..0c667a43 100644 --- a/src/parseUtils.js +++ b/src/parseUtils.js @@ -25,6 +25,22 @@ function parseBundle(bundlePath) { ast, walkState, { + AssignmentExpression(node, state) { + if (state.locations) return; + + // Modules are stored in exports.modules: + // exports.modules = {}; + const {left, right} = node; + + if ( + left && + left.object && left.object.name === 'exports' && + left.property && left.property.name === 'modules' && + isModulesHash(right) + ) { + state.locations = getModulesLocations(right); + } + }, CallExpression(node, state, c) { if (state.locations) return; diff --git a/test/bundles/validNodeBundle.js b/test/bundles/validNodeBundle.js new file mode 100644 index 00000000..4ec4f59a --- /dev/null +++ b/test/bundles/validNodeBundle.js @@ -0,0 +1,6 @@ +exports.ids = ["common"]; +exports.modules = { + 0: function(e,t,n){n(1),n(21),n(96),n(306),n(23),n(150),n(57),n(56),n(34),n(138),e.exports=n(348)}, + 3: function(e,t,n){"use strict";e.exports=n(680)}, + 5: function(e,t){} +}; diff --git a/test/bundles/validNodeBundle.modules.json b/test/bundles/validNodeBundle.modules.json new file mode 100644 index 00000000..0c6be617 --- /dev/null +++ b/test/bundles/validNodeBundle.modules.json @@ -0,0 +1,7 @@ +{ + "modules": { + "0": "function(e,t,n){n(1),n(21),n(96),n(306),n(23),n(150),n(57),n(56),n(34),n(138),e.exports=n(348)}", + "3": "function(e,t,n){\"use strict\";e.exports=n(680)}", + "5": "function(e,t){}" + } +}