mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
50afe2ef5a
The module, and its internal state, was duplicated in several packages, leading to duplicate ids when multiple renderers were used.
243 lines
6.3 KiB
JavaScript
243 lines
6.3 KiB
JavaScript
/**
|
|
* Copyright 2013-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
var gulp = require('gulp');
|
|
var babel = require('gulp-babel');
|
|
var flatten = require('gulp-flatten');
|
|
var del = require('del');
|
|
var merge = require('merge-stream');
|
|
|
|
var babelPluginModules = require('fbjs-scripts/babel-6/rewrite-modules');
|
|
var stripProvidesModule = require('fbjs-scripts/gulp/strip-provides-module');
|
|
var extractErrors = require('./scripts/error-codes/gulp-extract-errors');
|
|
var devExpressionWithCodes = require('./scripts/error-codes/dev-expression-with-codes');
|
|
|
|
// Load all of the Gulp plugins.
|
|
var plugins = require('gulp-load-plugins')();
|
|
|
|
function getTask(name) {
|
|
return require(`./gulp/tasks/${name}`)(gulp, plugins);
|
|
}
|
|
|
|
var paths = {
|
|
react: {
|
|
src: [
|
|
'src/umd/ReactUMDEntry.js',
|
|
'src/umd/ReactWithAddonsUMDEntry.js',
|
|
'src/umd/shims/**/*.js',
|
|
|
|
'src/isomorphic/**/*.js',
|
|
'src/addons/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
'!src/shared/vendor/**/*.js',
|
|
'!src/**/__benchmarks__/**/*.js',
|
|
'!src/**/__tests__/**/*.js',
|
|
'!src/**/__mocks__/**/*.js',
|
|
],
|
|
lib: 'build/node_modules/react/lib',
|
|
},
|
|
reactDOM: {
|
|
src: [
|
|
'src/umd/ReactDOMUMDEntry.js',
|
|
'src/umd/ReactDOMServerUMDEntry.js',
|
|
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM.
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
'!src/shared/vendor/**/*.js',
|
|
'!src/**/__benchmarks__/**/*.js',
|
|
'!src/**/__tests__/**/*.js',
|
|
'!src/**/__mocks__/**/*.js',
|
|
],
|
|
lib: 'build/node_modules/react-dom/lib',
|
|
},
|
|
reactNative: {
|
|
src: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
'!src/shared/vendor/**/*.js',
|
|
'!src/**/__benchmarks__/**/*.js',
|
|
'!src/**/__tests__/**/*.js',
|
|
'!src/**/__mocks__/**/*.js',
|
|
],
|
|
lib: 'build/node_modules/react-native/lib',
|
|
},
|
|
reactTestRenderer: {
|
|
src: [
|
|
'src/renderers/testing/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
'!src/shared/vendor/**/*.js',
|
|
'!src/**/__benchmarks__/**/*.js',
|
|
'!src/**/__tests__/**/*.js',
|
|
'!src/**/__mocks__/**/*.js',
|
|
],
|
|
lib: 'build/node_modules/react-test-renderer/lib',
|
|
},
|
|
};
|
|
|
|
var moduleMapBase = Object.assign(
|
|
{'object-assign': 'object-assign'},
|
|
require('fbjs/module-map')
|
|
);
|
|
|
|
var moduleMapReact = Object.assign(
|
|
{
|
|
// Addons needs to reach into DOM internals
|
|
ReactDOM: 'react-dom/lib/ReactDOM',
|
|
ReactInstanceMap: 'react-dom/lib/ReactInstanceMap',
|
|
ReactTestUtils: 'react-dom/lib/ReactTestUtils',
|
|
ReactPerf: 'react-dom/lib/ReactPerf',
|
|
getVendorPrefixedEventName: 'react-dom/lib/getVendorPrefixedEventName',
|
|
},
|
|
moduleMapBase
|
|
);
|
|
|
|
var rendererSharedState = {
|
|
// Alias
|
|
React: 'react/lib/React',
|
|
// Shared state
|
|
ReactCurrentOwner: 'react/lib/ReactCurrentOwner',
|
|
ReactComponentTreeHook: 'react/lib/ReactComponentTreeHook',
|
|
getNextDebugID: 'react/lib/getNextDebugID',
|
|
};
|
|
|
|
var moduleMapReactDOM = Object.assign(
|
|
{},
|
|
rendererSharedState,
|
|
moduleMapBase
|
|
);
|
|
|
|
var moduleMapReactNative = Object.assign(
|
|
{
|
|
// React Native Hooks
|
|
deepDiffer: 'react-native/lib/deepDiffer',
|
|
deepFreezeAndThrowOnMutationInDev: 'react-native/lib/deepFreezeAndThrowOnMutationInDev',
|
|
flattenStyle: 'react-native/lib/flattenStyle',
|
|
InitializeJavaScriptAppEngine: 'react-native/lib/InitializeJavaScriptAppEngine',
|
|
RCTEventEmitter: 'react-native/lib/RCTEventEmitter',
|
|
TextInputState: 'react-native/lib/TextInputState',
|
|
UIManager: 'react-native/lib/UIManager',
|
|
UIManagerStatTracker: 'react-native/lib/UIManagerStatTracker',
|
|
View: 'react-native/lib/View',
|
|
},
|
|
rendererSharedState,
|
|
moduleMapBase
|
|
);
|
|
|
|
var moduleMapReactTestRenderer = Object.assign(
|
|
{},
|
|
rendererSharedState,
|
|
moduleMapBase
|
|
);
|
|
|
|
var errorCodeOpts = {
|
|
errorMapFilePath: 'scripts/error-codes/codes.json',
|
|
};
|
|
|
|
var babelOptsReact = {
|
|
plugins: [
|
|
devExpressionWithCodes, // this pass has to run before `rewrite-modules`
|
|
[babelPluginModules, {map: moduleMapReact}],
|
|
],
|
|
};
|
|
|
|
var babelOptsReactDOM = {
|
|
plugins: [
|
|
devExpressionWithCodes, // this pass has to run before `rewrite-modules`
|
|
[babelPluginModules, {map: moduleMapReactDOM}],
|
|
],
|
|
};
|
|
|
|
var babelOptsReactNative = {
|
|
plugins: [
|
|
devExpressionWithCodes, // this pass has to run before `rewrite-modules`
|
|
[babelPluginModules, {map: moduleMapReactNative}],
|
|
],
|
|
};
|
|
|
|
var babelOptsReactTestRenderer = {
|
|
plugins: [
|
|
devExpressionWithCodes, // this pass has to run before `rewrite-modules`
|
|
[babelPluginModules, {map: moduleMapReactTestRenderer}],
|
|
],
|
|
};
|
|
|
|
gulp.task('eslint', getTask('eslint'));
|
|
|
|
gulp.task('lint', ['eslint']);
|
|
|
|
gulp.task('flow', getTask('flow'));
|
|
|
|
gulp.task('version-check', getTask('version-check'));
|
|
|
|
gulp.task('react:clean', function() {
|
|
return del([
|
|
paths.react.lib,
|
|
paths.reactDOM.lib,
|
|
paths.reactNative.lib,
|
|
paths.reactTestRenderer.lib,
|
|
]);
|
|
});
|
|
|
|
gulp.task('react:modules', function() {
|
|
return merge(
|
|
gulp
|
|
.src(paths.react.src)
|
|
.pipe(babel(babelOptsReact))
|
|
.pipe(stripProvidesModule())
|
|
.pipe(flatten())
|
|
.pipe(gulp.dest(paths.react.lib)),
|
|
|
|
gulp
|
|
.src(paths.reactDOM.src)
|
|
.pipe(babel(babelOptsReactDOM))
|
|
.pipe(stripProvidesModule())
|
|
.pipe(flatten())
|
|
.pipe(gulp.dest(paths.reactDOM.lib)),
|
|
|
|
gulp
|
|
.src(paths.reactNative.src)
|
|
.pipe(babel(babelOptsReactNative))
|
|
.pipe(stripProvidesModule())
|
|
.pipe(flatten())
|
|
.pipe(gulp.dest(paths.reactNative.lib)),
|
|
|
|
gulp
|
|
.src(paths.reactTestRenderer.src)
|
|
.pipe(stripProvidesModule())
|
|
.pipe(babel(babelOptsReactTestRenderer))
|
|
.pipe(flatten())
|
|
.pipe(gulp.dest(paths.reactTestRenderer.lib))
|
|
);
|
|
});
|
|
|
|
gulp.task('react:extract-errors', function() {
|
|
return gulp.src([].concat(
|
|
paths.react.src,
|
|
paths.reactDOM.src,
|
|
paths.reactNative.src,
|
|
paths.reactTestRenderer.src
|
|
)).pipe(extractErrors(errorCodeOpts));
|
|
});
|
|
|
|
gulp.task('default', ['react:modules']);
|