Плагин addComment Babel не работает при запуске с codemod
Я создал плагин babel:
module.exports = function (babel) {
const { types: t } = babel;
return {
name: 'addComment',
visitor: {
Program(path, state) {
path.addComment('leading', '@@@ My precious @@@');
path.unshiftContainer('body', t.noop());
}
}
};
}
Я ожидаю, что он должен добавить строку комментария
// @@@ My precious @@@
в верхнюю часть модуля и добавьте пустую строку после комментария.
Я запускал этот плагин с @ codemod / cli:
./node_modules/.bin/codemod --plugin ./babel-plugin.js ./transform-me.js
И я получил только пустую строку, вставленную в исходный файл, и без строки комментариев. Если я попробую тот же код в astexplorer.net, он будет работать нормально.
Я попытался добавить файл .babelrc с параметром "comments": true и запустить codemod с параметром --find-babel-config. Тот же результат.
Что я сделал не так?
1 ответ
Я нашел решение. Если я манипулирую массивом комментариев напрямую, то вставляются комментарии:
function addComment(path, comment) {
const rootNode = path.node.body[0];
if (!rootNode.comments) {
rootNode.comments = [];
}
rootNode.comments.push({
leading: true,
trailing: false,
value: comment,
type: 'CommentLine'
});
}
path.addComment('leading', 'my comment') -> addComment(path, 'my comment')