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);
// }