我的目标是通过 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
很容易地使用。