diff --git a/packages/babel-cli/bin/babel-node.js b/packages/babel-cli/bin/babel-node.js deleted file mode 100755 index c20e9befb8..0000000000 --- a/packages/babel-cli/bin/babel-node.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require("../lib/babel-node"); diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index d607f681f0..eb4cefac62 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -26,8 +26,7 @@ "lodash": "^4.2.0", "output-file-sync": "^2.0.0", "slash": "^1.0.0", - "source-map": "^0.5.0", - "v8flags": "^3.0.0" + "source-map": "^0.5.0" }, "optionalDependencies": { "chokidar": "^1.6.1" @@ -38,7 +37,6 @@ "bin": { "babel-doctor": "./bin/babel-doctor.js", "babel": "./bin/babel.js", - "babel-node": "./bin/babel-node.js", "babel-external-helpers": "./bin/babel-external-helpers.js" } } diff --git a/packages/babel-cli/src/_babel-node.js b/packages/babel-cli/src/_babel-node.js deleted file mode 100644 index 56c03c7683..0000000000 --- a/packages/babel-cli/src/_babel-node.js +++ /dev/null @@ -1,192 +0,0 @@ -import commander from "commander"; -import Module from "module"; -import { inspect } from "util"; -import path from "path"; -import repl from "repl"; -import * as babel from "babel-core"; -import vm from "vm"; -import "babel-polyfill"; -import register from "babel-register"; - -import pkg from "../package.json"; - -const program = new commander.Command("babel-node"); - -function collect(value, previousValue): Array { - // If the user passed the option with no value, like "babel-node file.js --presets", do nothing. - if (typeof value !== "string") return previousValue; - - const values = value.split(","); - - return previousValue ? previousValue.concat(values) : values; -} - -/* eslint-disable max-len */ -program.option("-e, --eval [script]", "Evaluate script"); -program.option("-p, --print [code]", "Evaluate script and print result"); -program.option( - "-o, --only [globs]", - "A comma-separated list of glob patterns to compile", - collect, -); -program.option( - "-i, --ignore [globs]", - "A comma-separated list of glob patterns to skip compiling", - collect, -); -program.option( - "-x, --extensions [extensions]", - "List of extensions to hook into [.es6,.js,.es,.jsx,.mjs]", - collect, -); -program.option("-w, --plugins [string]", "", collect); -program.option("-b, --presets [string]", "", collect); -/* eslint-enable max-len */ - -program.version(pkg.version); -program.usage("[options] [ -e script | script.js ] [arguments]"); -program.parse(process.argv); - -// - -register({ - extensions: program.extensions, - ignore: program.ignore, - only: program.only, - plugins: program.plugins, - presets: program.presets, -}); - -// - -const replPlugin = ({ types: t }) => ({ - visitor: { - ModuleDeclaration(path) { - throw path.buildCodeFrameError("Modules aren't supported in the REPL"); - }, - - VariableDeclaration(path) { - if (path.node.kind !== "var") { - throw path.buildCodeFrameError( - "Only `var` variables are supported in the REPL", - ); - } - }, - - Program(path) { - if (path.get("body").some(child => child.isExpressionStatement())) return; - - // If the executed code doesn't evaluate to a value, - // prevent implicit strict mode from printing 'use strict'. - path.pushContainer( - "body", - t.expressionStatement(t.identifier("undefined")), - ); - }, - }, -}); - -// - -const _eval = function(code, filename) { - code = code.trim(); - if (!code) return undefined; - - code = babel.transform(code, { - filename: filename, - presets: program.presets, - plugins: (program.plugins || []).concat([replPlugin]), - }).code; - - return vm.runInThisContext(code, { - filename: filename, - }); -}; - -if (program.eval || program.print) { - let code = program.eval; - if (!code || code === true) code = program.print; - - global.__filename = "[eval]"; - global.__dirname = process.cwd(); - - const module = new Module(global.__filename); - module.filename = global.__filename; - module.paths = Module._nodeModulePaths(global.__dirname); - - global.exports = module.exports; - global.module = module; - global.require = module.require.bind(module); - - const result = _eval(code, global.__filename); - if (program.print) { - const output = typeof result === "string" ? result : inspect(result); - process.stdout.write(output + "\n"); - } -} else { - if (program.args.length) { - // slice all arguments up to the first filename since they're babel args that we handle - let args = process.argv.slice(2); - - let i = 0; - let ignoreNext = false; - args.some(function(arg, i2) { - if (ignoreNext) { - ignoreNext = false; - return; - } - - if (arg[0] === "-") { - const parsedArg = program[arg.slice(2)]; - if (parsedArg && parsedArg !== true) { - ignoreNext = true; - } - } else { - i = i2; - return true; - } - }); - args = args.slice(i); - - // make the filename absolute - const filename = args[0]; - if (!path.isAbsolute(filename)) { - args[0] = path.join(process.cwd(), filename); - } - - // add back on node and concat the sliced args - process.argv = ["node"].concat(args); - process.execArgv.unshift(__filename); - - Module.runMain(); - } else { - replStart(); - } -} - -function replStart() { - repl.start({ - prompt: "> ", - input: process.stdin, - output: process.stdout, - eval: replEval, - useGlobal: true, - }); -} - -function replEval(code, context, filename, callback) { - let err; - let result; - - try { - if (code[0] === "(" && code[code.length - 1] === ")") { - code = code.slice(1, -1); // remove "(" and ")" - } - - result = _eval(code, filename); - } catch (e) { - err = e; - } - - callback(err, result); -} diff --git a/packages/babel-cli/src/babel-node.js b/packages/babel-cli/src/babel-node.js deleted file mode 100755 index 608aa4e17a..0000000000 --- a/packages/babel-cli/src/babel-node.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * This tiny wrapper file checks for known node flags and appends them - * when found, before invoking the "real" _babel-node(1) executable. - */ - -import getV8Flags from "v8flags"; -import path from "path"; - -let args = [path.join(__dirname, "_babel-node")]; - -let babelArgs = process.argv.slice(2); -let userArgs; - -// separate node arguments from script arguments -const argSeparator = babelArgs.indexOf("--"); -if (argSeparator > -1) { - userArgs = babelArgs.slice(argSeparator); // including the -- - babelArgs = babelArgs.slice(0, argSeparator); -} - -/** - * Replace dashes with underscores in the v8Flag name - * Also ensure that if the arg contains a value (e.g. --arg=true) - * that only the flag is returned. - */ -function getNormalizedV8Flag(arg) { - const matches = arg.match(/--(.+)/); - - if (matches) { - return `--${matches[1].replace(/-/g, "_")}`; - } - - return arg; -} - -getV8Flags(function(err, v8Flags) { - babelArgs.forEach(function(arg) { - const flag = arg.split("=")[0]; - - switch (flag) { - case "-d": - args.unshift("--debug"); - break; - - case "debug": - case "--debug": - case "--debug-brk": - case "--inspect": - case "--inspect-brk": - args.unshift(arg); - break; - - case "-gc": - args.unshift("--expose-gc"); - break; - - case "--expose-http2": - args.unshift("--expose-http2"); - break; - - case "--nolazy": - args.unshift(flag); - break; - - default: - if ( - v8Flags.indexOf(getNormalizedV8Flag(flag)) >= 0 || - arg.indexOf("--trace") === 0 - ) { - args.unshift(arg); - } else { - args.push(arg); - } - break; - } - }); - - // append arguments passed after -- - if (argSeparator > -1) { - args = args.concat(userArgs); - } - - try { - const kexec = require("kexec"); - kexec(process.argv[0], args); - } catch (err) { - if (err.code !== "MODULE_NOT_FOUND") throw err; - - const child_process = require("child_process"); - const proc = child_process.spawn(process.argv[0], args, { - stdio: "inherit", - }); - proc.on("exit", function(code, signal) { - process.on("exit", function() { - if (signal) { - process.kill(process.pid, signal); - } else { - process.exit(code); - } - }); - }); - - process.on("SIGINT", () => { - proc.kill("SIGINT"); - process.exit(1); - }); - } -}); diff --git a/packages/babel-cli/test/fixtures/babel-node/--eval/options.json b/packages/babel-cli/test/fixtures/babel-node/--eval/options.json deleted file mode 100644 index 09d27772df..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/--eval/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--eval", "console.log([1, 2, 3].map(x => x * x));"], - "stdout": "[ 1, 4, 9 ]" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/--extensions/in-files/foo.bar b/packages/babel-cli/test/fixtures/babel-node/--extensions/in-files/foo.bar deleted file mode 100644 index 9d023628ac..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/--extensions/in-files/foo.bar +++ /dev/null @@ -1 +0,0 @@ -console.log([1, 2, 3].map(x => x * x)); diff --git a/packages/babel-cli/test/fixtures/babel-node/--extensions/options.json b/packages/babel-cli/test/fixtures/babel-node/--extensions/options.json deleted file mode 100644 index c64999d8e2..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/--extensions/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["foo", "--extensions", ".bar"], - "stdout": "[ 1, 4, 9 ]" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/--print/options.json b/packages/babel-cli/test/fixtures/babel-node/--print/options.json deleted file mode 100644 index df235fd4d2..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/--print/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--print", "--eval", "([1, 2, 3].map(x => x * x))"], - "stdout": "[ 1, 4, 9 ]" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/arguments/in-files/bar.js b/packages/babel-cli/test/fixtures/babel-node/arguments/in-files/bar.js deleted file mode 100644 index 13257ec5e8..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/arguments/in-files/bar.js +++ /dev/null @@ -1 +0,0 @@ -console.log(process.argv[2]); diff --git a/packages/babel-cli/test/fixtures/babel-node/arguments/options.json b/packages/babel-cli/test/fixtures/babel-node/arguments/options.json deleted file mode 100644 index 5aa934d555..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/arguments/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["bar", "foo"], - "stdout": "foo" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/directory/in-files/foo/index.js b/packages/babel-cli/test/fixtures/babel-node/directory/in-files/foo/index.js deleted file mode 100644 index 6cbc6fbcfb..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/directory/in-files/foo/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var foo = () => console.log("foo"); -foo(); diff --git a/packages/babel-cli/test/fixtures/babel-node/directory/options.json b/packages/babel-cli/test/fixtures/babel-node/directory/options.json deleted file mode 100644 index 36b991ad38..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/directory/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "args": ["foo"] -} diff --git a/packages/babel-cli/test/fixtures/babel-node/directory/stdout.txt b/packages/babel-cli/test/fixtures/babel-node/directory/stdout.txt deleted file mode 100644 index 257cc5642c..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/directory/stdout.txt +++ /dev/null @@ -1 +0,0 @@ -foo diff --git a/packages/babel-cli/test/fixtures/babel-node/filename/in-files/bar.js b/packages/babel-cli/test/fixtures/babel-node/filename/in-files/bar.js deleted file mode 100644 index 6cbc6fbcfb..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/filename/in-files/bar.js +++ /dev/null @@ -1,2 +0,0 @@ -var foo = () => console.log("foo"); -foo(); diff --git a/packages/babel-cli/test/fixtures/babel-node/filename/options.json b/packages/babel-cli/test/fixtures/babel-node/filename/options.json deleted file mode 100644 index d9bcfc2f57..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/filename/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "args": ["bar"] -} diff --git a/packages/babel-cli/test/fixtures/babel-node/filename/stdout.txt b/packages/babel-cli/test/fixtures/babel-node/filename/stdout.txt deleted file mode 100644 index 257cc5642c..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/filename/stdout.txt +++ /dev/null @@ -1 +0,0 @@ -foo diff --git a/packages/babel-cli/test/fixtures/babel-node/no-strict/options.json b/packages/babel-cli/test/fixtures/babel-node/no-strict/options.json deleted file mode 100644 index 63fc4b34f4..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/no-strict/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--eval","--print", "var a = 1;"], - "stdout": "undefined" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/require/in-files/bar2.js b/packages/babel-cli/test/fixtures/babel-node/require/in-files/bar2.js deleted file mode 100644 index 5e0f4fd877..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/require/in-files/bar2.js +++ /dev/null @@ -1,2 +0,0 @@ -var bar = () => console.log("bar"); -bar(); diff --git a/packages/babel-cli/test/fixtures/babel-node/require/in-files/foo2.js b/packages/babel-cli/test/fixtures/babel-node/require/in-files/foo2.js deleted file mode 100644 index 71db6cd5b2..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/require/in-files/foo2.js +++ /dev/null @@ -1,5 +0,0 @@ -import "./bar2"; -import "./not_node_modules"; - -var foo = () => console.log("foo"); -foo(); diff --git a/packages/babel-cli/test/fixtures/babel-node/require/in-files/not_node_modules.jsx b/packages/babel-cli/test/fixtures/babel-node/require/in-files/not_node_modules.jsx deleted file mode 100644 index f14bae58e1..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/require/in-files/not_node_modules.jsx +++ /dev/null @@ -1,10 +0,0 @@ -/* -The purpose of this file is to test that the node_modules check in the require -hook doesn't mistakenly exclude something like "not_node_modules". To pass, this -file merely needs to be transpiled. The transpiled code won't, and doesn't need -to, execute without error. It won't execute because React will be undefined. -*/ -try { - ; -} -catch (e) {} diff --git a/packages/babel-cli/test/fixtures/babel-node/require/options.json b/packages/babel-cli/test/fixtures/babel-node/require/options.json deleted file mode 100644 index 988cc017dc..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/require/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "args": ["foo2"] -} diff --git a/packages/babel-cli/test/fixtures/babel-node/require/stdout.txt b/packages/babel-cli/test/fixtures/babel-node/require/stdout.txt deleted file mode 100644 index 128976523b..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/require/stdout.txt +++ /dev/null @@ -1,2 +0,0 @@ -bar -foo diff --git a/packages/babel-cli/test/fixtures/babel-node/v8Flag-dashed-with-param/options.json b/packages/babel-cli/test/fixtures/babel-node/v8Flag-dashed-with-param/options.json deleted file mode 100644 index a9cabbc10c..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/v8Flag-dashed-with-param/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--expose-gc-as=garbageCollector", "--eval", "console.log(typeof global.garbageCollector)"], - "stdout": "function" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/v8Flag-dashed/options.json b/packages/babel-cli/test/fixtures/babel-node/v8Flag-dashed/options.json deleted file mode 100644 index 82ff74d156..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/v8Flag-dashed/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--expose-gc", "--eval", "console.log(typeof global.gc)"], - "stdout": "function" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/v8Flag-underscored-with-param/options.json b/packages/babel-cli/test/fixtures/babel-node/v8Flag-underscored-with-param/options.json deleted file mode 100644 index a8b0e91738..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/v8Flag-underscored-with-param/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--expose_gc_as=garbageCollector", "--eval", "console.log(typeof global.garbageCollector)"], - "stdout": "function" -} diff --git a/packages/babel-cli/test/fixtures/babel-node/v8Flag-underscored/options.json b/packages/babel-cli/test/fixtures/babel-node/v8Flag-underscored/options.json deleted file mode 100644 index c279b0e13d..0000000000 --- a/packages/babel-cli/test/fixtures/babel-node/v8Flag-underscored/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": ["--expose_gc", "--eval", "console.log(typeof global.gc)"], - "stdout": "function" -} diff --git a/packages/babel-cli/test/index.js b/packages/babel-cli/test/index.js index 2bfaa02c71..fdde761cd0 100644 --- a/packages/babel-cli/test/index.js +++ b/packages/babel-cli/test/index.js @@ -127,10 +127,6 @@ const buildTest = function(binName, testName, opts) { args.push("--presets", presetLocs, "--plugins", pluginLocs); } - if (binName === "babel-node") { - args.push("--only", "../../../../packages/*/test"); - } - args = args.concat(opts.args); const spawn = child.spawn(process.execPath, args);