Don't minify symbols in production builds (#28881)

This disables symbol renaming in production builds. The original
variable and function names are preserved. All other forms of
compression applied by Closure (dead code elimination, inlining, etc)
are unchanged — the final program is identical to what we were producing
before, just in a more readable form.

The motivation is to make it easier to debug React issues that only
occur in production — the same reason we decided to start shipping
sourcemaps in #28827 and #28827.

However, because most apps run their own minification step on their npm
dependencies, it's not necessary for us to minify the symbols before
publishing — it'll be handled the app, if desired.

This is the same strategy Meta has used to ship React for years. The
React build itself has unminified symbols, but they get minified as part
of Meta's regular build pipeline.

Even if an app does not minify their npm dependencies, gzip covers most
of the cost of symbol renaming anyway.

This saves us from having to ship sourcemaps, which means even apps that
don't have sourcemaps configured will be able to debug the React build
as easily as they would any other npm dependency.
This commit is contained in:
Andrew Clark 2024-04-20 11:23:46 -04:00 committed by GitHub
parent ea26e38e33
commit 857ee8cdf9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
83 changed files with 101 additions and 259 deletions

View File

@ -43,8 +43,8 @@ const SIGNIFICANCE_THRESHOLD = 0.002;
const CRITICAL_ARTIFACT_PATHS = new Set([
// We always report changes to these bundles, even if the change is
// insignificant or non-existent.
'oss-stable/react-dom/cjs/react-dom.production.min.js',
'oss-experimental/react-dom/cjs/react-dom.production.min.js',
'oss-stable/react-dom/cjs/react-dom.production.js',
'oss-experimental/react-dom/cjs/react-dom.production.js',
'facebook-www/ReactDOM-prod.classic.js',
'facebook-www/ReactDOM-prod.modern.js',
]);

View File

@ -94,7 +94,6 @@
"shelljs": "^0.8.5",
"signedsource": "^2.0.0",
"targz": "^1.0.1",
"terser": "^5.30.3",
"through2": "^3.0.1",
"tmp": "^0.1.0",
"typescript": "^3.7.5",

View File

@ -3,7 +3,7 @@
// TODO: this doesn't make sense for an ESLint rule.
// We need to fix our build process to not create bundles for "raw" packages like this.
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/eslint-plugin-react-hooks.production.min.js');
module.exports = require('./cjs/eslint-plugin-react-hooks.production.js');
} else {
module.exports = require('./cjs/eslint-plugin-react-hooks.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/jest-react.production.min.js');
module.exports = require('./cjs/jest-react.production.js');
} else {
module.exports = require('./cjs/jest-react.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-art.production.min.js');
module.exports = require('./cjs/react-art.production.js');
} else {
module.exports = require('./cjs/react-art.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-cache.production.min.js');
module.exports = require('./cjs/react-cache.production.js');
} else {
module.exports = require('./cjs/react-cache.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-client-flight.production.min.js');
module.exports = require('./cjs/react-client-flight.production.js');
} else {
module.exports = require('./cjs/react-client-flight.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-debug-tools.production.min.js');
module.exports = require('./cjs/react-debug-tools.production.js');
} else {
module.exports = require('./cjs/react-debug-tools.development.js');
}

View File

@ -32,7 +32,7 @@ if (process.env.NODE_ENV === 'production') {
// DCE check should happen before ReactDOM bundle executes so that
// DevTools can report bad minification during injection.
checkDCE();
module.exports = require('./cjs/react-dom.production.min.js');
module.exports = require('./cjs/react-dom.production.js');
} else {
module.exports = require('./cjs/react-dom.development.js');
}

View File

@ -32,7 +32,7 @@ if (process.env.NODE_ENV === 'production') {
// DCE check should happen before ReactDOM bundle executes so that
// DevTools can report bad minification during injection.
checkDCE();
module.exports = require('./cjs/react-dom.profiling.min.js');
module.exports = require('./cjs/react-dom.profiling.js');
} else {
module.exports = require('./cjs/react-dom.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-dom.react-server.production.min.js');
module.exports = require('./cjs/react-dom.react-server.production.js');
} else {
module.exports = require('./cjs/react-dom.react-server.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-dom-server-rendering-stub.production.min.js');
module.exports = require('./cjs/react-dom-server-rendering-stub.production.js');
} else {
module.exports = require('./cjs/react-dom-server-rendering-stub.development.js');
}

View File

@ -2,8 +2,8 @@
var l, s;
if (process.env.NODE_ENV === 'production') {
l = require('./cjs/react-dom-server-legacy.browser.production.min.js');
s = require('./cjs/react-dom-server.browser.production.min.js');
l = require('./cjs/react-dom-server-legacy.browser.production.js');
s = require('./cjs/react-dom-server.browser.production.js');
} else {
l = require('./cjs/react-dom-server-legacy.browser.development.js');
s = require('./cjs/react-dom-server.browser.development.js');

View File

@ -3,8 +3,8 @@
var b;
var l;
if (process.env.NODE_ENV === 'production') {
b = require('./cjs/react-dom-server.bun.production.min.js');
l = require('./cjs/react-dom-server-legacy.browser.production.min.js');
b = require('./cjs/react-dom-server.bun.production.js');
l = require('./cjs/react-dom-server-legacy.browser.production.js');
} else {
b = require('./cjs/react-dom-server.bun.development.js');
l = require('./cjs/react-dom-server-legacy.browser.development.js');

View File

@ -3,8 +3,8 @@
var b;
var l;
if (process.env.NODE_ENV === 'production') {
b = require('./cjs/react-dom-server.edge.production.min.js');
l = require('./cjs/react-dom-server-legacy.browser.production.min.js');
b = require('./cjs/react-dom-server.edge.production.js');
l = require('./cjs/react-dom-server-legacy.browser.production.js');
} else {
b = require('./cjs/react-dom-server.edge.development.js');
l = require('./cjs/react-dom-server-legacy.browser.development.js');

View File

@ -2,8 +2,8 @@
var l, s;
if (process.env.NODE_ENV === 'production') {
l = require('./cjs/react-dom-server-legacy.node.production.min.js');
s = require('./cjs/react-dom-server.node.production.min.js');
l = require('./cjs/react-dom-server-legacy.node.production.js');
s = require('./cjs/react-dom-server.node.production.js');
} else {
l = require('./cjs/react-dom-server-legacy.node.development.js');
s = require('./cjs/react-dom-server.node.development.js');

View File

@ -2,7 +2,7 @@
var s;
if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-dom-server.browser.production.min.js');
s = require('./cjs/react-dom-server.browser.production.js');
} else {
s = require('./cjs/react-dom-server.browser.development.js');
}

View File

@ -2,7 +2,7 @@
var s;
if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-dom-server.edge.production.min.js');
s = require('./cjs/react-dom-server.edge.production.js');
} else {
s = require('./cjs/react-dom-server.edge.development.js');
}

View File

@ -2,7 +2,7 @@
var s;
if (process.env.NODE_ENV === 'production') {
s = require('./cjs/react-dom-server.node.production.min.js');
s = require('./cjs/react-dom-server.node.production.js');
} else {
s = require('./cjs/react-dom-server.node.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-dom-test-utils.production.min.js');
module.exports = require('./cjs/react-dom-test-utils.production.js');
} else {
module.exports = require('./cjs/react-dom-test-utils.development.js');
}

View File

@ -32,7 +32,7 @@ if (process.env.NODE_ENV === 'production') {
// DCE check should happen before ReactDOM bundle executes so that
// DevTools can report bad minification during injection.
checkDCE();
module.exports = require('./cjs/react-dom-unstable_testing.production.min.js');
module.exports = require('./cjs/react-dom-unstable_testing.production.js');
} else {
module.exports = require('./cjs/react-dom-unstable_testing.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-is.production.min.js');
module.exports = require('./cjs/react-is.production.js');
} else {
module.exports = require('./cjs/react-is.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-noop-renderer-flight-client.production.min.js');
module.exports = require('./cjs/react-noop-renderer-flight-client.production.js');
} else {
module.exports = require('./cjs/react-noop-renderer-flight-client.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-noop-renderer-flight-server.production.min.js');
module.exports = require('./cjs/react-noop-renderer-flight-server.production.js');
} else {
module.exports = require('./cjs/react-noop-renderer-flight-server.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-noop-renderer.production.min.js');
module.exports = require('./cjs/react-noop-renderer.production.js');
} else {
module.exports = require('./cjs/react-noop-renderer.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-noop-renderer-persistent.production.min.js');
module.exports = require('./cjs/react-noop-renderer-persistent.production.js');
} else {
module.exports = require('./cjs/react-noop-renderer-persistent.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-noop-renderer-server.production.min.js');
module.exports = require('./cjs/react-noop-renderer-server.production.js');
} else {
module.exports = require('./cjs/react-noop-renderer-server.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-reconciler-constants.production.min.js');
module.exports = require('./cjs/react-reconciler-constants.production.js');
} else {
module.exports = require('./cjs/react-reconciler-constants.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-reconciler.production.min.js');
module.exports = require('./cjs/react-reconciler.production.js');
} else {
module.exports = require('./cjs/react-reconciler.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-reconciler-reflection.production.min.js');
module.exports = require('./cjs/react-reconciler-reflection.production.js');
} else {
module.exports = require('./cjs/react-reconciler-reflection.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-refresh-babel.production.min.js');
module.exports = require('./cjs/react-refresh-babel.production.js');
} else {
module.exports = require('./cjs/react-refresh-babel.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-refresh-runtime.production.min.js');
module.exports = require('./cjs/react-refresh-runtime.production.js');
} else {
module.exports = require('./cjs/react-refresh-runtime.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-esm-client.browser.production.min.js');
module.exports = require('./cjs/react-server-dom-esm-client.browser.production.js');
} else {
module.exports = require('./cjs/react-server-dom-esm-client.browser.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-esm-client.node.production.min.js');
module.exports = require('./cjs/react-server-dom-esm-client.node.production.js');
} else {
module.exports = require('./cjs/react-server-dom-esm-client.node.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-esm-server.node.production.min.js');
module.exports = require('./cjs/react-server-dom-esm-server.node.production.js');
} else {
module.exports = require('./cjs/react-server-dom-esm-server.node.development.js');
}

View File

@ -33,7 +33,7 @@
"default": "./server.js"
},
"./server.node": "./server.node.js",
"./node-loader": "./esm/react-server-dom-esm-node-loader.production.min.js",
"./node-loader": "./esm/react-server-dom-esm-node-loader.production.js",
"./src/*": "./src/*.js",
"./package.json": "./package.json"
},

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-client.browser.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-client.browser.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-client.browser.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-client.edge.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-client.edge.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-client.edge.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-client.node.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-client.node.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-client.node.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-client.node.unbundled.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-client.node.unbundled.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-client.node.unbundled.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-server.browser.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-server.browser.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-server.browser.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-server.edge.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-server.edge.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-server.edge.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-server.node.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-server.node.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-server.node.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-turbopack-server.node.unbundled.production.min.js');
module.exports = require('./cjs/react-server-dom-turbopack-server.node.unbundled.production.js');
} else {
module.exports = require('./cjs/react-server-dom-turbopack-server.node.unbundled.development.js');
}

View File

@ -63,7 +63,7 @@
"./server.edge": "./server.edge.js",
"./server.node": "./server.node.js",
"./server.node.unbundled": "./server.node.unbundled.js",
"./node-loader": "./esm/react-server-dom-turbopack-node-loader.production.min.js",
"./node-loader": "./esm/react-server-dom-turbopack-node-loader.production.js",
"./node-register": "./node-register.js",
"./src/*": "./src/*.js",
"./package.json": "./package.json"

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-client.browser.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-client.browser.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-client.browser.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-client.edge.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-client.edge.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-client.edge.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-client.node.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-client.node.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-client.node.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-client.node.unbundled.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-client.node.unbundled.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-client.node.unbundled.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-server.browser.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-server.browser.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-server.browser.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-server.edge.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-server.edge.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-server.edge.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-server.node.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-server.node.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-server.node.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-dom-webpack-server.node.unbundled.production.min.js');
module.exports = require('./cjs/react-server-dom-webpack-server.node.unbundled.production.js');
} else {
module.exports = require('./cjs/react-server-dom-webpack-server.node.unbundled.development.js');
}

View File

@ -63,7 +63,7 @@
"./server.edge": "./server.edge.js",
"./server.node": "./server.node.js",
"./server.node.unbundled": "./server.node.unbundled.js",
"./node-loader": "./esm/react-server-dom-webpack-node-loader.production.min.js",
"./node-loader": "./esm/react-server-dom-webpack-node-loader.production.js",
"./node-register": "./node-register.js",
"./src/*": "./src/*.js",
"./package.json": "./package.json"

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server-flight.production.min.js');
module.exports = require('./cjs/react-server-flight.production.js');
} else {
module.exports = require('./cjs/react-server-flight.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-server.production.min.js');
module.exports = require('./cjs/react-server.production.js');
} else {
module.exports = require('./cjs/react-server.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-test-renderer.production.min.js');
module.exports = require('./cjs/react-test-renderer.production.js');
} else {
module.exports = require('./cjs/react-test-renderer.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react.production.min.js');
module.exports = require('./cjs/react.production.js');
} else {
module.exports = require('./cjs/react.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-jsx-dev-runtime.production.min.js');
module.exports = require('./cjs/react-jsx-dev-runtime.production.js');
} else {
module.exports = require('./cjs/react-jsx-dev-runtime.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-jsx-runtime.production.min.js');
module.exports = require('./cjs/react-jsx-runtime.production.js');
} else {
module.exports = require('./cjs/react-jsx-runtime.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-jsx-runtime.react-server.production.min.js');
module.exports = require('./cjs/react-jsx-runtime.react-server.production.js');
} else {
module.exports = require('./cjs/react-jsx-runtime.react-server.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react.react-server.production.min.js');
module.exports = require('./cjs/react.react-server.production.js');
} else {
module.exports = require('./cjs/react.react-server.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-unstable-cache.production.min.js');
module.exports = require('./cjs/react-unstable-cache.production.js');
} else {
module.exports = require('./cjs/react-unstable-cache.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/scheduler.production.min.js');
module.exports = require('./cjs/scheduler.production.js');
} else {
module.exports = require('./cjs/scheduler.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/scheduler.native.production.min.js');
module.exports = require('./cjs/scheduler.native.production.js');
} else {
module.exports = require('./cjs/scheduler.native.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/scheduler-unstable_mock.production.min.js');
module.exports = require('./cjs/scheduler-unstable_mock.production.js');
} else {
module.exports = require('./cjs/scheduler-unstable_mock.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/scheduler-unstable_post_task.production.min.js');
module.exports = require('./cjs/scheduler-unstable_post_task.production.js');
} else {
module.exports = require('./cjs/scheduler-unstable_post_task.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/use-subscription.production.min.js');
module.exports = require('./cjs/use-subscription.production.js');
} else {
module.exports = require('./cjs/use-subscription.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/use-sync-external-store.production.min.js');
module.exports = require('./cjs/use-sync-external-store.production.js');
} else {
module.exports = require('./cjs/use-sync-external-store.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');
module.exports = require('../cjs/use-sync-external-store-shim.production.js');
} else {
module.exports = require('../cjs/use-sync-external-store-shim.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('../cjs/use-sync-external-store-shim.native.production.min.js');
module.exports = require('../cjs/use-sync-external-store-shim.native.production.js');
} else {
module.exports = require('../cjs/use-sync-external-store-shim.native.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');
module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');
} else {
module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');
}

View File

@ -1,7 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/use-sync-external-store-with-selector.production.min.js');
module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');
} else {
module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');
}

View File

@ -5,12 +5,12 @@ const {join} = require('path');
async function build(reactPath, asyncCopyTo) {
// copy the UMD bundles
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react.production.min.js'),
join(__dirname, 'react.production.min.js')
join(reactPath, 'build', 'dist', 'react.production.js'),
join(__dirname, 'react.production.js')
);
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react-dom.production.min.js'),
join(__dirname, 'react-dom.production.min.js')
join(reactPath, 'build', 'dist', 'react-dom.production.js'),
join(__dirname, 'react-dom.production.js')
);
}

View File

@ -5,12 +5,12 @@ const {join} = require('path');
async function build(reactPath, asyncCopyTo) {
// copy the UMD bundles
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react.production.min.js'),
join(__dirname, 'react.production.min.js')
join(reactPath, 'build', 'dist', 'react.production.js'),
join(__dirname, 'react.production.js')
);
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react-dom.production.min.js'),
join(__dirname, 'react-dom.production.min.js')
join(reactPath, 'build', 'dist', 'react-dom.production.js'),
join(__dirname, 'react-dom.production.js')
);
}

View File

@ -5,12 +5,12 @@ const {join} = require('path');
async function build(reactPath, asyncCopyTo) {
// copy the UMD bundles
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react.production.min.js'),
join(__dirname, 'react.production.min.js')
join(reactPath, 'build', 'dist', 'react.production.js'),
join(__dirname, 'react.production.js')
);
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react-dom.production.min.js'),
join(__dirname, 'react-dom.production.min.js')
join(reactPath, 'build', 'dist', 'react-dom.production.js'),
join(__dirname, 'react-dom.production.js')
);
}

View File

@ -5,12 +5,12 @@ const {join} = require('path');
async function build(reactPath, asyncCopyTo) {
// copy the UMD bundles
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react.production.min.js'),
join(__dirname, 'react.production.min.js')
join(reactPath, 'build', 'dist', 'react.production.js'),
join(__dirname, 'react.production.js')
);
await asyncCopyTo(
join(reactPath, 'build', 'dist', 'react-dom.production.min.js'),
join(__dirname, 'react-dom.production.min.js')
join(reactPath, 'build', 'dist', 'react-dom.production.js'),
join(__dirname, 'react-dom.production.js')
);
}

View File

@ -10,7 +10,6 @@ const stripBanner = require('rollup-plugin-strip-banner');
const chalk = require('chalk');
const resolve = require('@rollup/plugin-node-resolve').nodeResolve;
const fs = require('fs');
const path = require('path');
const argv = require('minimist')(process.argv.slice(2));
const Modules = require('./modules');
const Bundles = require('./bundles');
@ -23,7 +22,6 @@ const Packaging = require('./packaging');
const {asyncRimRaf} = require('./utils');
const codeFrame = require('@babel/code-frame');
const Wrappers = require('./wrappers');
const minify = require('terser').minify;
const RELEASE_CHANNEL = process.env.RELEASE_CHANNEL;
@ -363,31 +361,8 @@ function getPlugins(
const isProduction = isProductionBundleType(bundleType);
const isProfiling = isProfilingBundleType(bundleType);
const {shouldStayReadable} = getBundleTypeFlags(bundleType);
const needsMinifiedByClosure = isProduction && bundleType !== ESM_PROD;
// Any other packages that should specifically _not_ have sourcemaps
const sourcemapPackageExcludes = [
// Having `//#sourceMappingUrl` for the `react-debug-tools` prod bundle breaks
// `ReactDevToolsHooksIntegration-test.js`, because it changes Node's generated
// stack traces and thus alters the hook name parsing behavior.
// Also, this is an internal-only package that doesn't need sourcemaps anyway
'react-debug-tools',
];
// Generate sourcemaps for true "production" build artifacts
// that will be used by bundlers, such as `react-dom.production.min.js`.
// Also include profiling builds as well.
const needsSourcemaps =
needsMinifiedByClosure &&
// This will only exclude `unstable_server-external-runtime.js` artifact
// To start generating sourcemaps for it, we should stop manually copying it to `facebook-www`
// and force `react-dom` to include .map files in npm-package at the root level
bundleType !== BROWSER_SCRIPT &&
!sourcemapPackageExcludes.includes(entry) &&
!shouldStayReadable;
return [
// Keep dynamic imports as externals
dynamicImports(),
@ -494,8 +469,9 @@ function getPlugins(
// https://github.com/facebook/react/issues/10909
assume_function_wrapper: true,
// Don't rename symbols (variable names, functions, etc). This will
// be handled in a later step.
// Don't rename symbols (variable names, functions, etc). We leave
// this up to the application to handle, if they want. Otherwise gzip
// takes care of it.
renaming: false,
}),
needsMinifiedByClosure &&
@ -518,89 +494,6 @@ function getPlugins(
);
},
},
isProduction &&
!shouldStayReadable && {
name: 'mangle-symbol-names',
async renderChunk(code, chunk, options, meta) {
// Minify the code by mangling symbol names. We already ran Closure
// on this code, so stuff like dead code elimination and inlining
// has already happened. This step is purely to rename the symbols,
// which we asked Closure to preserve.
//
// The only reason this is a separate step from Closure is so we
// can publish non-mangled versions of the code for easier debugging
// in production. We also publish sourcemaps that map back to the
// non-mangled code (*not* the pre-Closure code).
const outputFolder = path.dirname(options.file);
// Represent the "original" bundle as a file with no `.min` in the name
const filenameWithoutMin = filename.replace('.min', '');
// There's _one_ artifact where the incoming filename actually contains
// a folder name: "use-sync-external-store-shim/with-selector.production.js".
// The output path already has the right structure, but we need to strip this
// down to _just_ the JS filename.
const preMinifiedFilename = path.basename(filenameWithoutMin);
const preMinifiedBundlePath = path.join(
outputFolder,
preMinifiedFilename
);
// Use a path like `node_modules/react/cjs/react.production.min.js.map` for the sourcemap file
const finalSourcemapPath = options.file.replace('.js', '.js.map');
const finalSourcemapFilename = path.basename(finalSourcemapPath);
const terserOptions = {
// Don't bother compressing. Closure already did that.
compress: false,
toplevel: true,
// Mangle the symbol names.
mangle: {
toplevel: true,
},
};
if (needsSourcemaps) {
terserOptions.sourceMap = {
// Used to set the `file` field in the sourcemap
filename: filename,
// Used to set `# sourceMappingURL=` in the compiled code
url: finalSourcemapFilename,
};
}
const minifiedResult = await minify(
{[preMinifiedFilename]: code},
terserOptions
);
// Create the directory if it doesn't already exist
fs.mkdirSync(outputFolder, {recursive: true});
if (needsSourcemaps) {
const sourcemapJSON = JSON.parse(minifiedResult.map);
// All our code is considered "third-party" and should be ignored
// by default
sourcemapJSON.ignoreList = [0];
// Write the sourcemap to disk
fs.writeFileSync(
finalSourcemapPath,
JSON.stringify(sourcemapJSON)
);
}
// Write the original source to disk as a separate file
fs.writeFileSync(preMinifiedBundlePath, code);
return {
code: minifiedResult.code,
// TODO: Maybe we should use Rollup's sourcemap feature instead
// of writing it to disk manually?
map: null,
};
},
},
// Record bundle size.
sizes({
getSize: (size, gzip) => {

View File

@ -1098,17 +1098,17 @@ function getFilename(bundle, bundleType) {
case BUN_DEV:
return `${name}.development.js`;
case BUN_PROD:
return `${name}.production.min.js`;
return `${name}.production.js`;
case ESM_DEV:
return `${name}.development.js`;
case ESM_PROD:
return `${name}.production.min.js`;
return `${name}.production.js`;
case NODE_DEV:
return `${name}.development.js`;
case NODE_PROD:
return `${name}.production.min.js`;
return `${name}.production.js`;
case NODE_PROFILING:
return `${name}.profiling.min.js`;
return `${name}.profiling.js`;
case FB_WWW_DEV:
case RN_OSS_DEV:
case RN_FB_DEV:

View File

@ -2453,35 +2453,16 @@
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
dependencies:
"@jridgewell/set-array" "^1.2.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.24"
"@jridgewell/resolve-uri@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
"@jridgewell/resolve-uri@^3.1.0":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
"@jridgewell/set-array@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
"@jridgewell/source-map@^0.3.2":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda"
@ -2490,20 +2471,12 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/source-map@^0.3.3":
version "0.3.6"
resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a"
integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==
dependencies:
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
"@jridgewell/sourcemap-codec@^1.4.15":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
@ -2524,14 +2497,6 @@
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
version "0.3.25"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@leichtgewicht/ip-codec@^2.0.1":
version "2.0.4"
resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
@ -3724,11 +3689,6 @@ acorn@^8.1.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
acorn@^8.8.2:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
adbkit-logcat@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz#01d7f9b0cef9093a30bcb3b007efff301508962f"
@ -15038,16 +14998,6 @@ terser@^5.16.8:
commander "^2.20.0"
source-map-support "~0.5.20"
terser@^5.30.3:
version "5.30.3"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.3.tgz#f1bb68ded42408c316b548e3ec2526d7dd03f4d2"
integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.8.2"
commander "^2.20.0"
source-map-support "~0.5.20"
test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"