Add interop require support for AMD and UMD

This commit is contained in:
Casey Foster 2014-12-14 20:44:38 -06:00
parent 3a261a5e05
commit 5da4397392
7 changed files with 40 additions and 6 deletions

View File

@ -80,6 +80,10 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
} else {
// import foo from "foo";
ref = t.memberExpression(this._push(node), id, false);
if (specifier.default) {
ref = t.callExpression(this.file.addDeclaration("interop-require"), [ref]);
}
}
nodes.push(t.variableDeclaration("var", [

View File

@ -1,6 +1,11 @@
define(["exports", "foo"], function (exports, _foo) {
"use strict";
var foo = _foo["default"];
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var foo = _interopRequire(_foo["default"]);
var foo = _foo["default"];
});

View File

@ -1,6 +1,11 @@
define(["exports", "foo"], function (exports, _foo) {
"use strict";
var foo = _foo["default"];
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var foo = _interopRequire(_foo["default"]);
var xyz = _foo.baz;
});

View File

@ -1,7 +1,12 @@
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
"use strict";
var foo = _foo["default"];
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var foo = _interopRequire(_foo["default"]);
var foo = _foo;
var bar = _foo.bar;
var bar = _foo.foo;

View File

@ -7,6 +7,11 @@
})(function (exports, _foo) {
"use strict";
var foo = _foo["default"];
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var foo = _interopRequire(_foo["default"]);
var foo = _foo["default"];
});

View File

@ -7,6 +7,11 @@
})(function (exports, _foo) {
"use strict";
var foo = _foo["default"];
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var foo = _interopRequire(_foo["default"]);
var xyz = _foo.baz;
});

View File

@ -7,7 +7,12 @@
})(function (exports, _foo, _fooBar, _directoryFooBar) {
"use strict";
var foo = _foo["default"];
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var foo = _interopRequire(_foo["default"]);
var foo = _foo;
var bar = _foo.bar;
var bar = _foo.foo;