Skip to content

Commit 3df1ffe

Browse files
committed
Share Object.assign polyfill between UMD builds
1 parent 6552519 commit 3df1ffe

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

scripts/rollup/modules.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,19 @@ function createModuleMap(paths, extractErrors, bundleType) {
8787
return moduleMap;
8888
}
8989

90-
function getNodeModules(bundleType) {
90+
function getNodeModules(bundleType, isRenderer) {
9191
// rather than adding the rollup node resolve plugin,
9292
// we can instead deal with the only node module that is used
9393
// for UMD bundles - object-assign
9494
switch (bundleType) {
9595
case UMD_DEV:
9696
case UMD_PROD:
9797
return {
98-
'object-assign': resolve('./node_modules/object-assign/index.js'),
98+
// Bundle object-assign once in the isomorphic React, and then use
99+
// that from the renderer UMD. Avoids bundling it in both UMDs.
100+
'object-assign': isRenderer
101+
? resolve('./scripts/rollup/shims/rollup/assign.js')
102+
: resolve('./node_modules/object-assign/index.js'),
99103
// include the ART package modules directly by aliasing them from node_modules
100104
'art/modes/current': resolve('./node_modules/art/modes/current.js'),
101105
'art/modes/fast-noSideEffects': resolve(
@@ -286,7 +290,7 @@ function getAliases(paths, bundleType, isRenderer, extractErrors) {
286290
bundleType
287291
),
288292
getInternalModules(),
289-
getNodeModules(bundleType),
293+
getNodeModules(bundleType, isRenderer),
290294
getFbjsModuleAliases(bundleType)
291295
);
292296
}

scripts/rollup/results.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"bundleSizes": {
33
"react.development.js (UMD_DEV)": {
4-
"size": 66238,
5-
"gzip": 16739
4+
"size": 66336,
5+
"gzip": 16788
66
},
77
"react.production.min.js (UMD_PROD)": {
8-
"size": 6707,
9-
"gzip": 2801
8+
"size": 6716,
9+
"gzip": 2804
1010
},
1111
"react.development.js (NODE_DEV)": {
1212
"size": 56692,
@@ -25,12 +25,12 @@
2525
"gzip": 6707
2626
},
2727
"react-dom.development.js (UMD_DEV)": {
28-
"size": 649654,
29-
"gzip": 149173
28+
"size": 647720,
29+
"gzip": 148505
3030
},
3131
"react-dom.production.min.js (UMD_PROD)": {
32-
"size": 103686,
33-
"gzip": 32364
32+
"size": 102839,
33+
"gzip": 32049
3434
},
3535
"react-dom.development.js (NODE_DEV)": {
3636
"size": 608523,
@@ -81,12 +81,12 @@
8181
"gzip": 15742
8282
},
8383
"react-dom-server.browser.development.js (UMD_DEV)": {
84-
"size": 136901,
85-
"gzip": 34895
84+
"size": 134937,
85+
"gzip": 34221
8686
},
8787
"react-dom-server.browser.production.min.js (UMD_PROD)": {
88-
"size": 15917,
89-
"gzip": 6199
88+
"size": 15077,
89+
"gzip": 5914
9090
},
9191
"react-dom-server.browser.development.js (NODE_DEV)": {
9292
"size": 105249,
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var ReactInternals = require('react')
2+
.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
3+
4+
module.exports = ReactInternals.assign;

src/isomorphic/ReactEntry.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ var React = {
5252

5353
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {
5454
ReactCurrentOwner: require('ReactCurrentOwner'),
55+
// Used by renderers to avoid bundling object-assign twice in UMD bundles:
56+
assign: require('object-assign'),
5557
},
5658
};
5759

0 commit comments

Comments
 (0)