본문 바로가기
web/babel

babel, change ternary to If-else statements

by java개발자 2022. 11. 29.
var babel = require("@babel/core");

// 삼항연산자를 if문으로 수정
var ternaryTemplate = babel.template(`
(function() {
  if (TEST) {
    return CONSEQUENT;
  }
  return ALTERNATE;
})();
`);
var custom1 = function ({
  types: t
}) {
  return {
    visitor: {
      ConditionalExpression(path) {
        try {
          path.replaceWith(
            ternaryTemplate({
              TEST: path.node.test,
              CONSEQUENT: path.node.consequent,
              ALTERNATE: path.node.alternate,
            })
          );
        } catch (e) {
          throw path.buildCodeFrameError("Error message here: " + e.message);
        }
      }
    },
  };
};

sourceCode = `
var a = true ? b : c;
var b = true ? d ? e : f : c;

`;
sourceCode = babel.transformSync(sourceCode, {
  plugins: [custom1],
}).code;
console.log(sourceCode);
// 결과
// var a = function () {
//   if (true) {
//     return b;
//   }
//   return c;
// }();
// var b = function () {
//   if (true) {
//     return function () {
//       if (d) {
//         return e;
//       }
//       return f;
//     }();
//   }
//   return c;
// }();

'web > babel' 카테고리의 다른 글

babel, add curly braces in arrow function  (0) 2022.11.29
babel, add curly braces one-line if-statements  (0) 2022.11.29
babel, remove comments  (0) 2022.11.29