mirror of
https://github.com/facebook/react.git
synced 2026-02-23 20:23:02 +00:00
43 lines
1.4 KiB
JavaScript
Executable File
43 lines
1.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
"use strict";
|
|
|
|
var visitors = require('../vendor/fbtransform/visitors').transformVisitors;
|
|
var transform = require('../vendor/fbtransform/lib/transform').transform;
|
|
var debranch = require("../vendor/woodchipper").debranch;
|
|
|
|
require("commoner").resolve(function(id) {
|
|
var context = this;
|
|
|
|
// Note that the result of context.getProvidedP() is cached for the
|
|
// duration of the build, so it is both consistent and cheap to
|
|
// evaluate multiple times.
|
|
return context.getProvidedP().then(function(idToPath) {
|
|
// If a module declares its own identifier using @providesModule
|
|
// then that identifier will be a key in the idToPath object.
|
|
if (idToPath.hasOwnProperty(id)) {
|
|
return context.readFileP(idToPath[id]);
|
|
}
|
|
|
|
// Otherwise assume the identifier maps directly to a path in the
|
|
// filesystem.
|
|
return context.readModuleP(id);
|
|
});
|
|
|
|
}).process(function(id, source) {
|
|
var context = this;
|
|
|
|
// This is where JSX, ES6, etc. desugaring happens.
|
|
source = transform(visitors.react, source).code;
|
|
|
|
return context.makePromise(function(callback) {
|
|
var constants = context.config.constants || {};
|
|
|
|
// Debranching means removing any obviously dead code after
|
|
// replacing constant conditional expressions with literal
|
|
// (boolean) values.
|
|
debranch(constants, source, function(source) {
|
|
callback(null, source);
|
|
});
|
|
});
|
|
});
|