migrate to improved module syntax - fixes #25
This commit is contained in:
parent
fd2187b37d
commit
a1bf8ab788
15
README.md
15
README.md
@ -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 {foo as bar} from "foo"; // var bar = require("foo").foo;
|
||||
|
||||
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
|
||||
|
||||
@ -1 +1 @@
|
||||
module.exports = exports = VALUE;
|
||||
exports.default = VALUE;
|
||||
|
||||
1
lib/6to5/templates/require.js
Normal file
1
lib/6to5/templates/require.js
Normal file
@ -0,0 +1 @@
|
||||
require(MODULE_NAME);
|
||||
@ -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),
|
||||
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));
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
@ -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": {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
var foo = require("foo");
|
||||
var foo = require("foo");
|
||||
var foo = require("foo").default;
|
||||
var foo = require("foo").default;
|
||||
|
||||
@ -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");
|
||||
|
||||
6
test/fixtures/modules/imports/expected.js
vendored
6
test/fixtures/modules/imports/expected.js
vendored
@ -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");
|
||||
|
||||
12
test/fixtures/modules/overview/actual.js
vendored
Normal file
12
test/fixtures/modules/overview/actual.js
vendored
Normal 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;
|
||||
20
test/fixtures/modules/overview/expected.js
vendored
Normal file
20
test/fixtures/modules/overview/expected.js
vendored
Normal 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;
|
||||
Loading…
x
Reference in New Issue
Block a user