From 63bad42d7f10210a2498a1725356d4a28f1777e5 Mon Sep 17 00:00:00 2001 From: Jaideep Bhoosreddy Date: Fri, 22 Nov 2019 02:46:16 -0500 Subject: [PATCH] Add local babel workflow (#25) * Add local babel workflow * update README --- README.md | 6 ++++++ lib/run-tests/contextualize-require.js | 13 +++++++++++++ lib/run-tests/get-babel-plugins.js | 10 ++++++---- lib/run-tests/transpile.js | 5 +++-- 4 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 lib/run-tests/contextualize-require.js diff --git a/README.md b/README.md index a0b1536..3eef0b5 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,12 @@ If you want to run **all** the tests, run node lib/run-tests I_AM_SURE ``` +If you want to run against a local copy of babel repo (useful for debugging): + +``` +BABEL_PATH=../babel node lib/run-tests [pattern] +``` + ## Download babel/babel master test262 artifact ``` diff --git a/lib/run-tests/contextualize-require.js b/lib/run-tests/contextualize-require.js new file mode 100644 index 0000000..7ecce87 --- /dev/null +++ b/lib/run-tests/contextualize-require.js @@ -0,0 +1,13 @@ +const path = require('path'); + +const babelPath = process.env.BABEL_PATH ? + path.resolve(process.cwd(), process.env.BABEL_PATH) : + undefined; + +module.exports = function contextualizeRequire(path) { + if (!babelPath) { + return require(path); + } + const newPath = `${babelPath}/${path.replace('@babel/', 'packages/babel-')}`; + return require(newPath); +}; diff --git a/lib/run-tests/get-babel-plugins.js b/lib/run-tests/get-babel-plugins.js index ff360bc..e57d953 100644 --- a/lib/run-tests/get-babel-plugins.js +++ b/lib/run-tests/get-babel-plugins.js @@ -1,10 +1,12 @@ "use strict"; +const requireBabel = require('./contextualize-require'); + const featuresToPlugins = { - "class-fields-public": require("@babel/plugin-proposal-class-properties"), - "class-methods-private": require("@babel/plugin-proposal-private-methods"), - "numeric-separator-literal": require("@babel/plugin-proposal-numeric-separator"), - //"import.meta": require("@babel/plugin-syntax-import-meta"), + "class-fields-public": requireBabel("@babel/plugin-proposal-class-properties"), + "class-methods-private": requireBabel("@babel/plugin-proposal-private-methods"), + "numeric-separator-literal": requireBabel("@babel/plugin-proposal-numeric-separator"), + //"import.meta": requireBabel("@babel/plugin-syntax-import-meta"), }; const defaultPlugins = [ diff --git a/lib/run-tests/transpile.js b/lib/run-tests/transpile.js index 113453b..95cb503 100644 --- a/lib/run-tests/transpile.js +++ b/lib/run-tests/transpile.js @@ -1,7 +1,8 @@ "use strict"; -const { transformSync, loadOptions } = require("@babel/core"); -const presetEnv = require("@babel/preset-env"); +const requireBabel = require('./contextualize-require'); +const { transformSync, loadOptions } = requireBabel("@babel/core"); +const presetEnv = requireBabel("@babel/preset-env"); const getBabelPlugins = require("./get-babel-plugins");