Плагин 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')
Другие вопросы по тегам