Saya telah membuat plugin 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());
                }
            }
        };
    }

Saya berharap itu harus menambahkan baris komentar // @@@ My precious @@@ ke bagian atas modul dan menambahkan baris kosong setelah komentar.

Saya menjalankan plugin ini dengan @codemod/cli:

./node_modules/.bin/codemod --plugin ./babel-plugin.js ./transform-me.js

Dan saya hanya mendapatkan satu baris kosong yang dimasukkan ke dalam file sumber dan tidak ada baris komentar. Jika saya mencoba kode yang sama di astexplorer.net, itu berfungsi dengan baik.

Saya telah mencoba menambahkan file .babelrc dengan opsi "comments": true dan menjalankan codemod dengan --find-babel-config param. Hasil yang sama.

Apa kesalahan yang telah aku perbuat?

0
konclave 10 Mei 2021, 18:47

1 menjawab

Jawaban Terbaik

Saya telah menemukan keputusan. Jika saya memanipulasi array komentar secara langsung, maka komentar dimasukkan:

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')
0
konclave 10 Mei 2021, 19:17