diff --git a/bin/6to5-node b/bin/6to5-node index 5cfde69d5e..e9a45cc6fd 100755 --- a/bin/6to5-node +++ b/bin/6to5-node @@ -1,2 +1,56 @@ #!/usr/bin/env node -require("v8-argv")("--harmony", __dirname + "/_6to5-node"); + +/** + * This tiny wrapper file checks for known node flags and appends them + * when found, before invoking the "real" _6to5-node(1) executable. + */ + +var spawn = require("child_process").spawn; +var args = ["--harmony", __dirname + "/_6to5-node"]; + +process.argv.slice(2).forEach(function(arg){ + var flag = arg.split("=")[0]; + + switch (flag) { + case "-d": + args.unshift("--debug"); + args.push("--no-timeouts"); + break; + case "debug": + case "--debug": + case "--debug-brk": + args.unshift(arg); + args.push("--no-timeouts"); + break; + case "-gc": + case "--expose-gc": + args.unshift("--expose-gc"); + break; + case "--gc-global": + case "--harmony": + case "--harmony-proxies": + case "--harmony-collections": + case "--harmony-generators": + case "--no-deprecation": + case "--prof": + case "--throw-deprecation": + case "--trace-deprecation": + args.unshift(arg); + break; + default: + if (0 == arg.indexOf("--trace")) args.unshift(arg); + else args.push(arg); + break; + } +}); + +var proc = 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); + } + }); +}); diff --git a/package.json b/package.json index 6040050e39..ef6c981b48 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,7 @@ "source-map-support": "0.2.7", "esutils": "1.1.4", "acorn-6to5": "https://github.com/sebmck/acorn-6to5/archive/f5110383517eef0bea78c2da2a1fb01fbed74e4e.tar.gz", - "estraverse": "^1.7.0", - "v8-argv": "^0.2.0" + "estraverse": "^1.7.0" }, "devDependencies": { "istanbul": "0.3.2",