migrate to improved module syntax - fixes #25

This commit is contained in:
Sebastian McKenzie 2014-10-09 23:16:55 +11:00
parent fd2187b37d
commit a1bf8ab788
13 changed files with 86 additions and 71 deletions

View File

@ -195,22 +195,23 @@ And open `test/browser/index.html` if it doesn't open automatically.
## Modules
6to5 modules compile straight to CommonJS, because of this various liberties are
taken into account to easen their usage.
taken into account to make their usage easier.
```javascript
import "foo"; // var foo = require("foo");
import "foo-bar"; // var fooBar = require("foo-bar");
import "./directory/foo-bar"; // var fooBar = require("./directory/foo-bar");
import foo from "foo"; // var foo = require("foo");
import "foo"; // require("foo");
import "foo-bar"; // require("foo-bar");
import "./directory/foo-bar"; // require("./directory/foo-bar");
import foo from "foo"; // var foo = require("foo").default;
import * as foo from "foo"; // var foo = require("foo");
import { bar } from "foo"; // var bar = require("foo").bar;
import foo as bar from "foo"; // var bar = require("foo").foo;
import {bar} from "foo"; // var bar = require("foo").bar;
import {foo as bar} from "foo"; // var bar = require("foo").foo;
export { test }; // exports.test = test;
export {test}; // exports.test = test;
export var test = 5; // var test = 5; exports.test = test;
export default test; // module.exports = exports = test;
export default test; // exports.default = test;
```
If you'd like to disable this behaviour and use the more ES6-like

View File

@ -1 +1 @@
module.exports = exports = VALUE;
exports.default = VALUE;

View File

@ -0,0 +1 @@
require(MODULE_NAME);

View File

@ -3,13 +3,6 @@ var util = require("../util");
var b = require("ast-types").builders;
var _ = require("lodash");
var toModuleNameIdentifier = function (node) {
var id = node.source.value;
id = path.basename(id, path.extname(id));
id = util.camelCase(id);
return b.identifier(id);
};
exports.ImportDeclaration = function (node) {
var nodes = [];
@ -18,11 +11,16 @@ exports.ImportDeclaration = function (node) {
var variableName = specifier.name || specifier.id;
var key = specifier.id.name;
var templateName = "require-assign";
if (specifier.type === "ImportSpecifier") {
if (key !== "default") templateName += "-key";
// import foo from "foo";
if (specifier.type === "ImportDefaultSpecifier") {
key = b.identifier("default");
}
var templateName = "require-assign";
// import * as bar from "foo";
if (specifier.type !== "ImportNamespaceSpecifier") templateName += "-key";
nodes.push(util.template(templateName, {
VARIABLE_NAME: variableName.name,
MODULE_NAME: node.source.raw,
@ -30,16 +28,15 @@ exports.ImportDeclaration = function (node) {
}));
});
} else {
nodes.push(util.template("require-assign", {
VARIABLE_NAME: toModuleNameIdentifier(node),
MODULE_NAME: node.source.raw
}));
nodes.push(util.template("require", {
MODULE_NAME: node.source.raw
}, true));
}
return nodes;
};
var pushSpecifiers = function (node, nodes) {
var pushExportSpecifiers = function (node, nodes) {
_.each(node.specifiers, function (specifier) {
var variableName = specifier.name || specifier.id;
@ -49,38 +46,22 @@ var pushSpecifiers = function (node, nodes) {
MODULE_NAME: node.source.raw
}, true));
} else {
var templateName;
if (variableName.name === "default") {
templateName = "exports-default-require";
} else {
templateName = "exports-require-assign";
}
if (specifier.id.name !== "default") templateName += "-key";
nodes.push(util.template(templateName, {
nodes.push(util.template("exports-require-assign-key", {
VARIABLE_NAME: variableName.name,
MODULE_NAME: node.source.raw,
KEY: specifier.id
}, true));
}
} else {
if (variableName.name === "default") {
nodes.push(util.template("exports-default", {
VALUE: specifier.id
}, true));
} else {
nodes.push(util.template("exports-assign", {
VALUE: specifier.id,
KEY: variableName
}, true));
}
nodes.push(util.template("exports-assign", {
VALUE: specifier.id,
KEY: variableName
}, true));
}
});
};
var pushDeclaration = function (node, nodes) {
var pushExportDeclaration = function (node, nodes) {
var declar = node.declaration;
if (node.default) {
@ -111,9 +92,9 @@ exports.ExportDeclaration = function (node) {
var nodes = [];
if (node.declaration) {
pushDeclaration(node, nodes);
pushExportDeclaration(node, nodes);
} else {
pushSpecifiers(node, nodes);
pushExportSpecifiers(node, nodes);
}
return nodes;

View File

@ -1,7 +1,7 @@
{
"name": "6to5",
"description": "Turn ES6 code into vanilla ES5 with source maps and no runtime",
"version": "1.5.5",
"version": "1.6.0",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://github.com/sebmck/6to5",
"repository": {

View File

@ -1,21 +1,21 @@
module.exports = exports = 42;
module.exports = exports = {};
exports.default = 42;
exports.default = {};
module.exports = exports = [];
exports.default = [];
module.exports = exports = foo;
exports.default = foo;
module.exports = exports = function () {}
exports.default = function () {}
module.exports = exports = function () {
exports.default = function () {
function Anonymous() {
}
return Anonymous;
}();
module.exports = exports = function foo () {}
exports.default = function foo () {}
module.exports = exports = function () {
exports.default = function () {
function foo() {
}
return foo;

View File

@ -11,12 +11,12 @@ exports.bar = require("foo").bar;
exports.bar = require("foo").foo;
module.exports = exports = require("foo").foo;
exports.default = require("foo").foo;
module.exports = exports = require("foo").foo;
exports.default = require("foo").foo;
exports.bar = require("foo").bar;
module.exports = exports = require("foo");
exports.default = require("foo").default;
exports.foo = require("foo");
exports.foo = require("foo").default;

View File

@ -5,7 +5,7 @@ exports.bar = bar;
exports.bar = foo;
module.exports = exports = foo;
exports.default = foo;
module.exports = exports = foo;
exports.default = foo;
exports.bar = bar;

View File

@ -1,2 +1,2 @@
var foo = require("foo");
var foo = require("foo");
var foo = require("foo").default;
var foo = require("foo").default;

View File

@ -1,5 +1,5 @@
var foo = require("foo");
var foo = require("foo").default;
var xyz = require("foo").baz;
var foo = require("foo");
var foo = require("foo").default;
var bar = require("foo");

View File

@ -1,3 +1,3 @@
var foo = require("foo");
var fooBar = require("foo-bar");
var fooBar = require("./directory/foo-bar");
require("foo");
require("foo-bar");
require("./directory/foo-bar");

View File

@ -0,0 +1,12 @@
import "foo";
import "foo-bar";
import "./directory/foo-bar";
import foo from "foo";
import * as foo from "foo";
import {bar} from "foo";
import {foo as bar} from "foo";
export {test};
export var test = 5;
export default test;

View File

@ -0,0 +1,20 @@
require("foo");
require("foo-bar");
require("./directory/foo-bar");
var foo = require("foo").default;
var foo = require("foo");
var bar = require("foo").bar;
var bar = require("foo").foo;
exports.test = test;
var test = 5;
exports.test = test;
exports.default = test;