mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
* Enable Yarn workspaces for packages/* * Move src/isomorphic/* into packages/react/src/* * Create index.js stubs for all packages in packages/* This makes the test pass again, but breaks the build because npm/ folders aren't used yet. I'm not sure if we'll keep this structure--I'll just keep working and fix the build after it settles down. * Put FB entry point for react-dom into packages/* * Move src/renderers/testing/* into packages/react-test-renderer/src/* Note that this is currently broken because Jest ignores node_modules, and so Yarn linking makes Jest skip React source when transforming. * Remove src/node_modules It is now unnecessary. Some tests fail though. * Add a hacky workaround for Jest/Workspaces issue Jest sees node_modules and thinks it's third party code. This is a hacky way to teach Jest to still transform anything in node_modules/react* if it resolves outside of node_modules (such as to our packages/*) folder. I'm not very happy with this and we should revisit. * Add a fake react-native package * Move src/renderers/art/* into packages/react-art/src/* * Move src/renderers/noop/* into packages/react-noop-renderer/src/* * Move src/renderers/dom/* into packages/react-dom/src/* * Move src/renderers/shared/fiber/* into packages/react-reconciler/src/* * Move DOM/reconciler tests I previously forgot to move * Move src/renderers/native-*/* into packages/react-native-*/src/* * Move shared code into packages/shared It's not super clear how to organize this properly yet. * Add back files that somehow got lost * Fix the build * Prettier * Add missing license headers * Fix an issue that caused mocks to get included into build * Update other references to src/ * Re-run Prettier * Fix lint * Fix weird Flow violation I didn't change this file but Flow started complaining. Caleb said this annotation was unnecessarily using $Abstract though so I removed it. * Update sizes * Fix stats script * Fix packaging fixtures Use file: instead of NODE_PATH since NODE_PATH. NODE_PATH trick only worked because we had no react/react-dom in root node_modules, but now we do. file: dependency only works as I expect in Yarn, so I moved the packaging fixtures to use Yarn and committed lockfiles. Verified that the page shows up. * Fix art fixture * Fix reconciler fixture * Fix SSR fixture * Rename native packages
107 lines
3.2 KiB
JavaScript
107 lines
3.2 KiB
JavaScript
'use strict';
|
|
|
|
// React's test can only work in NODE_ENV=test because of how things
|
|
// are set up. So we might as well enforce it.
|
|
process.env.NODE_ENV = 'test';
|
|
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
|
|
var babel = require('babel-core');
|
|
var coffee = require('coffee-script');
|
|
|
|
var tsPreprocessor = require('./ts-preprocessor');
|
|
|
|
// This assumes the module map has been built. This might not be safe.
|
|
// We should consider consuming this from a built fbjs module from npm.
|
|
var moduleMap = require('fbjs/module-map');
|
|
var babelPluginModules = require('fbjs-scripts/babel-6/rewrite-modules');
|
|
var createCacheKeyFunction = require('fbjs-scripts/jest/createCacheKeyFunction');
|
|
|
|
// Use require.resolve to be resilient to file moves, npm updates, etc
|
|
var pathToBabel = path.join(
|
|
require.resolve('babel-core'),
|
|
'..',
|
|
'package.json'
|
|
);
|
|
var pathToModuleMap = require.resolve('fbjs/module-map');
|
|
var pathToBabelPluginDevWithCode = require.resolve(
|
|
'../error-codes/replace-invariant-error-codes'
|
|
);
|
|
var pathToBabelPluginModules = require.resolve(
|
|
'fbjs-scripts/babel-6/rewrite-modules'
|
|
);
|
|
var pathToBabelPluginAsyncToGenerator = require.resolve(
|
|
'babel-plugin-transform-async-to-generator'
|
|
);
|
|
var pathToBabelrc = path.join(__dirname, '..', '..', '.babelrc');
|
|
var pathToErrorCodes = require.resolve('../error-codes/codes.json');
|
|
|
|
// TODO: make sure this stays in sync with gulpfile
|
|
var babelOptions = {
|
|
plugins: [
|
|
pathToBabelPluginDevWithCode, // this pass has to run before `rewrite-modules`
|
|
[
|
|
babelPluginModules,
|
|
{
|
|
map: Object.assign({}, moduleMap, {
|
|
'object-assign': 'object-assign',
|
|
}),
|
|
},
|
|
],
|
|
// Keep stacks detailed in tests.
|
|
// Don't put this in .babelrc so that we don't embed filenames
|
|
// into ReactART builds that include JSX.
|
|
// TODO: I have not verified that this actually works.
|
|
require.resolve('babel-plugin-transform-react-jsx-source'),
|
|
],
|
|
retainLines: true,
|
|
};
|
|
|
|
module.exports = {
|
|
process: function(src, filePath) {
|
|
// Resolve the path so we can tell our own packages from node_modules.
|
|
filePath = fs.realpathSync(filePath);
|
|
|
|
if (filePath.match(/\.coffee$/)) {
|
|
return coffee.compile(src, {bare: true});
|
|
}
|
|
if (filePath.match(/\.ts$/) && !filePath.match(/\.d\.ts$/)) {
|
|
return tsPreprocessor.compile(src, filePath);
|
|
}
|
|
if (
|
|
!filePath.match(/\/node_modules\//) &&
|
|
!filePath.match(/\/third_party\//)
|
|
) {
|
|
// for test files, we also apply the async-await transform, but we want to
|
|
// make sure we don't accidentally apply that transform to product code.
|
|
var isTestFile = !!filePath.match(/\/__tests__\//);
|
|
return babel.transform(
|
|
src,
|
|
Object.assign(
|
|
{filename: path.relative(process.cwd(), filePath)},
|
|
babelOptions,
|
|
isTestFile
|
|
? {
|
|
plugins: [pathToBabelPluginAsyncToGenerator].concat(
|
|
babelOptions.plugins
|
|
),
|
|
}
|
|
: {}
|
|
)
|
|
).code;
|
|
}
|
|
return src;
|
|
},
|
|
|
|
getCacheKey: createCacheKeyFunction([
|
|
__filename,
|
|
pathToBabel,
|
|
pathToBabelrc,
|
|
pathToModuleMap,
|
|
pathToBabelPluginDevWithCode,
|
|
pathToBabelPluginModules,
|
|
pathToErrorCodes,
|
|
]),
|
|
};
|