📌
babel-parser デバッグスクリプト
babel-parser を開発するときに使うやつ。./packages/babel-parser
において使っている。jq よく知らないのでもっと良い書き方あるかも。
-
--omit-loc
でロケーション情報なしのやつ。 -
--errors
で Recoverable なエラーの配列。
/* eslint-disable */
const { execSync } = require("child_process");
const { parse, parseExpression } = require("./lib/index.js");
const args = process.argv.slice(2);
const modeArg = args[0];
const codes = [`export function f() {}`];
const result = parse(codes[0], {
plugins: ["importAssertions"],
sourceType: "module",
errorRecovery: true,
});
if (modeArg === "--errors") {
console.log(result.errors);
} else if (modeArg === "--omit-loc") {
const string = JSON.stringify(result);
execSync(
`echo '${string}' | jq '.program | walk(if type == "object" and has("loc") then del(.loc, .start, .end) else . end)'`,
{ shell: true, stdio: "inherit" }
);
} else {
console.log(JSON.stringify(result, null, 2));
}
Discussion