📌

babel-parser デバッグスクリプト

2021/11/29に公開

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