본문 바로가기
web/babel

babel, add curly braces one-line if-statements

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

// if문에 add curly-brace (one line)
var custom1 = function ({
  types: t
}) {
  return {
    visitor: {
      // if, else if
      IfStatement(path) {
        if (path.node.consequent.type !== 'BlockStatement') {
          var consequent = t.blockStatement([path.node.consequent]);
          path.replaceWith(
            t.ifStatement(path.node.test, consequent, path.node.alternate)
          );
        }
      },
      // else
      ExpressionStatement(path) {
        if (path.parentPath.node.type === 'IfStatement') {
          path.replaceWith(
            t.blockStatement([path.node])
          )
        }
      },
    },
  };
};

sourceCode = `
if (a)
  console.log(1)

if (a)
  bbb(1);
else
  bbb(333);

if (a)
  bbb(1);
else if (b)
  bbb(222);
else
  bbb(333);

if (a)
  bbb(1);
else if (b)
  bbb(222);

`;
sourceCode = babel.transformSync(sourceCode, {
  plugins: [custom1],
}).code;
console.log(sourceCode);
// 결과
// if (a) {
//   console.log(1);
// }
// if (a) {
//   bbb(1);
// } else {
//   bbb(333);
// }
// if (a) {
//   bbb(1);
// } else if (b) {
//   bbb(222);
// } else {
//   bbb(333);
// }
// if (a) {
//   bbb(1);
// } else if (b) {
//   bbb(222);
// }

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

babel, change ternary to If-else statements  (0) 2022.11.29
babel, add curly braces in arrow function  (0) 2022.11.29
babel, remove comments  (0) 2022.11.29