8

私の目標は、babel を介して機能するいくつかの requirejs コードを偽造することです。次を追加するとif (typeof define !== "function") { var define = require("amdefine")(module); }、nodejsで実行しているときにすべてのファイルの先頭に、うまくいくように見えることがわかりました。

これは私が書いたコードで、うまくいくか、ほとんどうまくいくと思っていました。

function injectDefine(babel) {
    var header = 'if (typeof define !== "function") { var define = require("amdefine")(module); }';

    return new babel.Plugin('amdefine', {
        visitor: {
            Program: {
                enter: function(path, file) {
                    path.unshiftContainer(
                        'body',
                        babel.types.expressionStatement(
                            babel.types.stringLiteral(header)
                        )
                    );
                },
            },
        },
    });
}

require('babel-core/register')({
    stage: 0,
    plugins: [{transformer: injectDefine}],
});

require('../components/button');

components/buttonファイルは、いくつかのファイルがロードできることをテストしようとしているだけです。

その他の注意事項: 私は babel 5 を使用しており、現在アップグレードできません。.babelrc私も今はなかなか使えません。

4

2 に答える 2