Fix babel-standalone for realz (#6137)

* Fix babel-standalone

* Fix infinite loop in Makefile (oops)

* Override Node.js module resolution to handle babel-core
This commit is contained in:
Daniel Lo Nigro 2017-08-22 13:46:30 -07:00 committed by GitHub
parent 62c22c7b5d
commit 93cf26abca
7 changed files with 53 additions and 15 deletions

View File

@ -9,7 +9,6 @@ const watch = require("gulp-watch");
const gutil = require("gulp-util"); const gutil = require("gulp-util");
const gulp = require("gulp"); const gulp = require("gulp");
const path = require("path"); const path = require("path");
const registerBabelStandaloneTasks = require("./packages/babel-standalone/src/gulpTasks");
const base = path.join(__dirname, "packages"); const base = path.join(__dirname, "packages");
const scripts = "./packages/*/src/**/*.js"; const scripts = "./packages/*/src/**/*.js";
@ -60,5 +59,3 @@ gulp.task("watch", ["build"], function() {
gulp.start("build"); gulp.start("build");
}); });
}); });
registerBabelStandaloneTasks(gulp);

View File

@ -11,9 +11,12 @@ build: clean
rm -rf packages/*/lib rm -rf packages/*/lib
./node_modules/.bin/gulp build ./node_modules/.bin/gulp build
ifneq ($(BABEL_ENV), "cov") ifneq ($(BABEL_ENV), "cov")
./node_modules/.bin/gulp build-babel-standalone make build-standalone
endif endif
build-standalone:
./node_modules/.bin/gulp build-babel-standalone --cwd=packages/babel-standalone/
build-dist: build build-dist: build
cd packages/babel-polyfill; \ cd packages/babel-polyfill; \
scripts/build-dist.sh scripts/build-dist.sh

View File

@ -14,7 +14,6 @@
"babel-cli": "7.0.0-alpha.18", "babel-cli": "7.0.0-alpha.18",
"babel-core": "7.0.0-alpha.18", "babel-core": "7.0.0-alpha.18",
"babel-eslint": "8.0.0-alpha.15", "babel-eslint": "8.0.0-alpha.15",
"babel-loader": "^7.1.1",
"babel-plugin-istanbul": "^4.1.4", "babel-plugin-istanbul": "^4.1.4",
"babel-preset-env": "2.0.0-alpha.18", "babel-preset-env": "2.0.0-alpha.18",
"babel-preset-flow": "7.0.0-alpha.18", "babel-preset-flow": "7.0.0-alpha.18",

View File

@ -0,0 +1,6 @@
const registerBabelStandaloneTask = require("./src/gulpTasks")
.registerBabelStandaloneTask;
const gulp = require("gulp");
const version = require("./package.json").version;
registerBabelStandaloneTask(gulp, "babel", "Babel", __dirname, version);

View File

@ -4,8 +4,14 @@
* compilation of all the JavaScript files. This is because it targets web * compilation of all the JavaScript files. This is because it targets web
* browsers, so more transforms are needed than the regular Babel builds that * browsers, so more transforms are needed than the regular Babel builds that
* only target Node.js. * only target Node.js.
*
* The tasks in this file are designed to be reusable, so that they can be used
* to make standalone builds of other Babel plugins/presets (such as babel-minify)
*/ */
// Must run first
require("./overrideModuleResolution")();
const pump = require("pump"); const pump = require("pump");
const rename = require("gulp-rename"); const rename = require("gulp-rename");
const RootMostResolvePlugin = require("webpack-dependency-suite").RootMostResolvePlugin; const RootMostResolvePlugin = require("webpack-dependency-suite").RootMostResolvePlugin;
@ -100,24 +106,27 @@ function webpackBuild(filename, libraryName, version) {
});*/ });*/
} }
function registerGulpTasks(gulp) { function registerBabelStandaloneTask(gulp, name, exportName, path, version) {
gulp.task("build-babel-standalone", ["build"], cb => { gulp.task("build-" + name + "-standalone", cb => {
pump( pump(
[ [
gulp.src(__dirname + "/index.js"), gulp.src(path + "/src/index.js"),
webpackBuild( webpackBuild(
"babel.js", name + ".js",
"Babel", exportName,
require(__dirname + "/../package.json").version version
), ),
gulp.dest(__dirname + "/../"), gulp.dest(path),
uglify(), uglify(),
rename({ extname: ".min.js" }), rename({ extname: ".min.js" }),
gulp.dest(__dirname + "/../"), gulp.dest(path),
], ],
cb cb
); );
}); });
} }
module.exports = registerGulpTasks; module.exports = {
webpackBuild: webpackBuild,
registerBabelStandaloneTask: registerBabelStandaloneTask,
}

View File

@ -0,0 +1,24 @@
/**
* babel-loader causes problems as it's not part of the monorepo. It pulls in
* an older version of babel-core (the version referenced by the root
* package.json), rather than the version of babel-core that's in the repo. The
* only way to solve this without moving babel-loader into the monorepo is to
* override Node's module resolution algorithm to specify a custom resolver for
* babel-core to *force* it to use our version.
*
* Here be dragons.
*/
const Module = require("module");
module.exports = function overrideModuleResolution() {
const originalLoader = Module._load.bind(Module);
Module._load = function babelStandaloneLoader(request, parent, isMain) {
// Redirect babel-core to version in the repo.
if (request === "babel-core") {
request = __dirname + "/../../babel-core";
}
return originalLoader(request, parent, isMain);
};
};

View File

@ -563,7 +563,7 @@ babel-helpers@7.0.0-alpha.18:
dependencies: dependencies:
babel-template "7.0.0-alpha.18" babel-template "7.0.0-alpha.18"
babel-loader@7.1.1, babel-loader@^7.1.1: babel-loader@7.1.1:
version "7.1.1" version "7.1.1"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488"
dependencies: dependencies: