createClass + PropTypes + checkPropTypes warnings (#9399)

(Temporarily) re-adds getters with deprecation warnings for React.PropTypes, React.checkPropTypes, and React.createClass.

* 08bd020: Replace all references to React.PropTypes with prop-types to avoid triggering our own warning message.
* ef5b5c6: Removed several references to React.createClass that appeared after rebasing this branch. (reviewed by @flarnie)
* 524ce20: Added getters for createClass and PropTypes to the main React isomorphic object, behind one-time warning messages. (reviewed by @spicyj)
* db48f54: Fixed Rollup bundles to inline 'prop-types' and 'create-react-class' for UMD builds only. (reviewed by @spicyj, @trueadm )
* cf49cfd: Updated tests-passing.txt to remove tests that were deleted in this branch.
* d34109a: Responses to PR feedback from @spicyj. (Added package.json dependencies to packages/react and packages/react-dom. Renamed a var. Expanded on an inline comment.)
* 488c8d2: Added warning for moved package to React.checkPropTypes accessor too and updated build script.
* 83bcb29: Wordsmithing for deprecation notices (added fb.me links).
* afdc9d2: Tweaked legacy module inlining to remove order-of-deps constraint
* d1348b9: Removed $FlowFixMe.
* 7dbc3e7: More wordsmithing of deprecation notices based on Dan's feedback.
This commit is contained in:
Brian Vaughn
2017-04-11 14:28:03 -07:00
committed by GitHub
parent aa1f8687d7
commit 2beec2f308
59 changed files with 710 additions and 1373 deletions

View File

@@ -45,6 +45,8 @@ scripts/shared/__tests__/evalToString-test.js
src/isomorphic/__tests__/React-test.js
* should log a deprecation warning once when using React.createMixin
* should warn once when attempting to access React.createClass
* should warn once when attempting to access React.PropTypes
* should warn once when attempting to access React.checkPropTypes
src/isomorphic/children/__tests__/ReactChildren-test.js
* should support identity for simple
@@ -278,19 +280,6 @@ src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js
* should have received the validator's return value
* should not warn if the validator returned null
src/isomorphic/classic/types/__tests__/ReactPropTypesProduction-test.js
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should be a no-op
* should not have been called
src/isomorphic/modern/class/__tests__/ReactClassEquivalence-test.js
* tests the same thing for es6 classes and CoffeeScript
* tests the same thing for es6 classes and TypeScript

View File

@@ -23,7 +23,7 @@ function compile(content, contentFilename) {
getSourceFile(filename, languageVersion) {
var source;
var jestRegex = /jest\.d\.ts/;
var reactRegex = /(?:React|ReactDOM)(?:\.d)?\.ts$/;
var reactRegex = /(?:React|ReactDOM|PropTypes)(?:\.d)?\.ts$/;
// `path.normalize` is used to turn forward slashes in
// the file path into backslashes on Windows.

View File

@@ -45,7 +45,12 @@ const bundles = [
sourceMap: false,
},
entry: 'src/isomorphic/React.js',
externals: [],
externals: [
'create-react-class/factory',
'prop-types',
'prop-types/checkPropTypes',
'prop-types/factory',
],
fbEntry: 'src/fb/ReactFBEntry.js',
hasteName: 'React',
isRenderer: false,
@@ -74,7 +79,7 @@ const bundles = [
sourceMap: false,
},
entry: 'src/renderers/dom/ReactDOM.js',
externals: [],
externals: ['prop-types', 'prop-types/checkPropTypes'],
fbEntry: 'src/fb/ReactDOMFBEntry.js',
hasteName: 'ReactDOMStack',
isRenderer: true,
@@ -86,6 +91,7 @@ const bundles = [
'src/renderers/shared/**/*.js',
'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM.
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -102,7 +108,7 @@ const bundles = [
sourceMap: false,
},
entry: 'src/renderers/dom/fiber/ReactDOMFiber.js',
externals: [],
externals: ['prop-types', 'prop-types/checkPropTypes'],
fbEntry: 'src/fb/ReactDOMFiberFBEntry.js',
hasteName: 'ReactDOMFiber',
isRenderer: true,
@@ -114,6 +120,7 @@ const bundles = [
'src/renderers/shared/**/*.js',
'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM.
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -133,7 +140,7 @@ const bundles = [
sourceMap: false,
},
entry: 'src/renderers/dom/ReactDOMServer.js',
externals: [],
externals: ['prop-types', 'prop-types/checkPropTypes'],
fbEntry: 'src/renderers/dom/ReactDOMServer.js',
hasteName: 'ReactDOMServerStack',
isRenderer: true,
@@ -144,6 +151,7 @@ const bundles = [
'src/renderers/dom/**/*.js',
'src/renderers/shared/**/*.js',
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -169,6 +177,7 @@ const bundles = [
'art/modes/current',
'art/modes/fast-noSideEffects',
'art/core/transform',
'prop-types/checkPropTypes',
'react-dom',
],
fbEntry: 'src/renderers/art/ReactARTStack.js',
@@ -181,6 +190,7 @@ const bundles = [
'src/renderers/art/**/*.js',
'src/renderers/shared/**/*.js',
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -203,6 +213,7 @@ const bundles = [
'art/modes/current',
'art/modes/fast-noSideEffects',
'art/core/transform',
'prop-types/checkPropTypes',
'react-dom',
],
fbEntry: 'src/renderers/art/ReactARTFiber.js',
@@ -215,6 +226,7 @@ const bundles = [
'src/renderers/art/**/*.js',
'src/renderers/shared/**/*.js',
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -304,7 +316,7 @@ const bundles = [
sourceMap: false,
},
entry: 'src/renderers/testing/ReactTestRendererFiber',
externals: [],
externals: ['prop-types/checkPropTypes'],
fbEntry: 'src/renderers/testing/ReactTestRendererFiber',
hasteName: 'ReactTestRendererFiber',
isRenderer: true,
@@ -316,6 +328,7 @@ const bundles = [
'src/renderers/shared/**/*.js',
'src/renderers/testing/**/*.js',
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -330,7 +343,7 @@ const bundles = [
sourceMap: false,
},
entry: 'src/renderers/testing/stack/ReactTestRendererStack',
externals: [],
externals: ['prop-types/checkPropTypes'],
fbEntry: 'src/renderers/testing/stack/ReactTestRendererStack',
hasteName: 'ReactTestRendererStack',
isRenderer: true,
@@ -342,6 +355,7 @@ const bundles = [
'src/renderers/shared/**/*.js',
'src/renderers/testing/**/*.js',
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
@@ -360,7 +374,7 @@ const bundles = [
sourceMap: false,
},
entry: 'src/renderers/noop/ReactNoop.js',
externals: [],
externals: ['prop-types/checkPropTypes'],
isRenderer: true,
label: 'noop-fiber',
manglePropertiesOnProd: false,
@@ -369,6 +383,7 @@ const bundles = [
'src/renderers/noop/**/*.js',
'src/renderers/shared/**/*.js',
'src/isomorphic/classic/types/checkPropTypes.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],

View File

@@ -52,6 +52,14 @@ const devOnlyFilesToStubOut = [
"'ReactTestUtils'",
];
const legacyModules = [
'create-react-class',
'create-react-class/factory',
'prop-types',
'prop-types/checkPropTypes',
'prop-types/factory',
];
// this function builds up a very niave Haste-like moduleMap
// that works to create up an alias map for modules to link
// up to their actual disk location so Rollup can properly
@@ -230,6 +238,29 @@ function replaceDevOnlyStubbedModules(bundleType) {
}
}
function replaceLegacyModuleAliases(bundleType) {
switch (bundleType) {
case UMD_DEV:
case UMD_PROD:
const modulesAlias = {};
legacyModules.forEach(legacyModule => {
const modulePath = legacyModule.includes('/')
? legacyModule
: `${legacyModule}/index`;
const resolvedPath = resolve(`./node_modules/${modulePath}`);
modulesAlias[`'${legacyModule}'`] = `'${resolvedPath}'`;
});
return modulesAlias;
case NODE_DEV:
case NODE_PROD:
case FB_DEV:
case FB_PROD:
case RN_DEV:
case RN_PROD:
return {};
}
}
function getAliases(paths, bundleType, isRenderer, extractErrors) {
return Object.assign(
createModuleMap(
@@ -247,7 +278,8 @@ function getDefaultReplaceModules(bundleType) {
return Object.assign(
{},
replaceFbjsModuleAliases(bundleType),
replaceDevOnlyStubbedModules(bundleType)
replaceDevOnlyStubbedModules(bundleType),
replaceLegacyModuleAliases(bundleType)
);
}

View File

@@ -1,117 +1,117 @@
{
"branch": "bundle-fixes",
"branch": "prop-types",
"bundleSizes": {
"react.development.js (UMD_DEV)": {
"size": 116098,
"gzip": 29520
"size": 121474,
"gzip": 30524
},
"react.production.min.js (UMD_PROD)": {
"size": 13707,
"gzip": 5073
"size": 15685,
"gzip": 5765
},
"react-dom.development.js (UMD_DEV)": {
"size": 563844,
"gzip": 130190
"size": 583352,
"gzip": 134572
},
"react-dom.production.min.js (UMD_PROD)": {
"size": 120191,
"gzip": 37860
"size": 120740,
"gzip": 38092
},
"react-dom-server.development.js (UMD_DEV)": {
"size": 476049,
"gzip": 115267
"size": 495558,
"gzip": 119685
},
"react-dom-server.production.min.js (UMD_PROD)": {
"size": 106489,
"gzip": 33035
"size": 107033,
"gzip": 33273
},
"react-art.development.js (UMD_DEV)": {
"size": 339929,
"gzip": 76018
"size": 342770,
"gzip": 76828
},
"react-art.production.min.js (UMD_PROD)": {
"size": 95013,
"gzip": 28991
"gzip": 28990
},
"react.development.js (NODE_DEV)": {
"size": 109110,
"gzip": 27479
"size": 70286,
"gzip": 17600
},
"react.production.min.js (NODE_PROD)": {
"size": 12598,
"gzip": 4649
"size": 9226,
"gzip": 3626
},
"React-dev.js (FB_DEV)": {
"size": 110875,
"gzip": 28140
"size": 72143,
"gzip": 18236
},
"React-prod.js (FB_PROD)": {
"size": 56406,
"gzip": 14416
"size": 36643,
"gzip": 9256
},
"ReactDOMStack-dev.js (FB_DEV)": {
"size": 522626,
"gzip": 124708
"size": 522763,
"gzip": 124727
},
"ReactDOMStack-prod.js (FB_PROD)": {
"size": 352708,
"gzip": 84660
"size": 352776,
"gzip": 84675
},
"react-dom.development.js (NODE_DEV)": {
"size": 542218,
"gzip": 125162
"size": 542350,
"gzip": 125199
},
"react-dom.production.min.js (NODE_PROD)": {
"size": 116858,
"gzip": 36717
"size": 116925,
"gzip": 36732
},
"ReactDOMFiber-dev.js (FB_DEV)": {
"size": 797268,
"gzip": 184134
"size": 797397,
"gzip": 184161
},
"ReactDOMFiber-prod.js (FB_PROD)": {
"size": 407540,
"gzip": 93567
"size": 407613,
"gzip": 93586
},
"react-dom-server.development.js (NODE_DEV)": {
"size": 445452,
"gzip": 107574
"size": 445589,
"gzip": 107597
},
"react-dom-server.production.min.js (NODE_PROD)": {
"size": 101344,
"gzip": 31273
"size": 101411,
"gzip": 31292
},
"ReactDOMServerStack-dev.js (FB_DEV)": {
"size": 444144,
"gzip": 107423
"size": 444281,
"gzip": 107443
},
"ReactDOMServerStack-prod.js (FB_PROD)": {
"size": 333744,
"gzip": 80424
"size": 334166,
"gzip": 80444
},
"ReactARTStack-dev.js (FB_DEV)": {
"size": 141589,
"gzip": 32280
"size": 142986,
"gzip": 32714
},
"ReactARTStack-prod.js (FB_PROD)": {
"size": 99762,
"gzip": 22576
"size": 101143,
"gzip": 22993
},
"react-art.development.js (NODE_DEV)": {
"size": 265123,
"gzip": 56951
"size": 265214,
"gzip": 56974
},
"react-art.production.min.js (NODE_PROD)": {
"size": 56591,
"gzip": 17132
"size": 56628,
"gzip": 17152
},
"ReactARTFiber-dev.js (FB_DEV)": {
"size": 264301,
"gzip": 56758
"size": 264392,
"gzip": 56780
},
"ReactARTFiber-prod.js (FB_PROD)": {
"size": 205292,
"gzip": 43132
"size": 205336,
"gzip": 43154
},
"ReactNativeStack.js (RN)": {
"size": 233993,
@@ -122,20 +122,20 @@
"gzip": 84001
},
"ReactTestRendererFiber-dev.js (FB_DEV)": {
"size": 262210,
"gzip": 55722
"size": 262301,
"gzip": 55747
},
"ReactTestRendererStack-dev.js (FB_DEV)": {
"size": 151425,
"gzip": 34728
"size": 151521,
"gzip": 34765
},
"react-noop-renderer.development.js (NODE_DEV)": {
"size": 254207,
"gzip": 53701
"size": 254298,
"gzip": 53728
},
"react-test-renderer.development.js (NODE_DEV)": {
"size": 263041,
"gzip": 55919
"size": 263132,
"gzip": 55938
}
}
}