migrate to improved module syntax - fixes #25
This commit is contained in:
parent
fd2187b37d
commit
a1bf8ab788
19
README.md
19
README.md
@ -195,22 +195,23 @@ And open `test/browser/index.html` if it doesn't open automatically.
|
|||||||
## Modules
|
## Modules
|
||||||
|
|
||||||
6to5 modules compile straight to CommonJS, because of this various liberties are
|
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
|
```javascript
|
||||||
import "foo"; // var foo = require("foo");
|
import "foo"; // require("foo");
|
||||||
import "foo-bar"; // var fooBar = require("foo-bar");
|
import "foo-bar"; // require("foo-bar");
|
||||||
import "./directory/foo-bar"; // var fooBar = require("./directory/foo-bar");
|
import "./directory/foo-bar"; // require("./directory/foo-bar");
|
||||||
import foo from "foo"; // var foo = require("foo");
|
|
||||||
|
import foo from "foo"; // var foo = require("foo").default;
|
||||||
import * as foo from "foo"; // var foo = require("foo");
|
import * as foo from "foo"; // var foo = require("foo");
|
||||||
|
|
||||||
import { bar } from "foo"; // var bar = require("foo").bar;
|
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 {test}; // exports.test = test;
|
||||||
export var test = 5; // var test = 5; 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
|
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 b = require("ast-types").builders;
|
||||||
var _ = require("lodash");
|
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) {
|
exports.ImportDeclaration = function (node) {
|
||||||
var nodes = [];
|
var nodes = [];
|
||||||
|
|
||||||
@ -18,11 +11,16 @@ exports.ImportDeclaration = function (node) {
|
|||||||
var variableName = specifier.name || specifier.id;
|
var variableName = specifier.name || specifier.id;
|
||||||
var key = specifier.id.name;
|
var key = specifier.id.name;
|
||||||
|
|
||||||
var templateName = "require-assign";
|
// import foo from "foo";
|
||||||
if (specifier.type === "ImportSpecifier") {
|
if (specifier.type === "ImportDefaultSpecifier") {
|
||||||
if (key !== "default") templateName += "-key";
|
key = b.identifier("default");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var templateName = "require-assign";
|
||||||
|
|
||||||
|
// import * as bar from "foo";
|
||||||
|
if (specifier.type !== "ImportNamespaceSpecifier") templateName += "-key";
|
||||||
|
|
||||||
nodes.push(util.template(templateName, {
|
nodes.push(util.template(templateName, {
|
||||||
VARIABLE_NAME: variableName.name,
|
VARIABLE_NAME: variableName.name,
|
||||||
MODULE_NAME: node.source.raw,
|
MODULE_NAME: node.source.raw,
|
||||||
@ -30,16 +28,15 @@ exports.ImportDeclaration = function (node) {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
nodes.push(util.template("require-assign", {
|
nodes.push(util.template("require", {
|
||||||
VARIABLE_NAME: toModuleNameIdentifier(node),
|
MODULE_NAME: node.source.raw
|
||||||
MODULE_NAME: node.source.raw
|
}, true));
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nodes;
|
return nodes;
|
||||||
};
|
};
|
||||||
|
|
||||||
var pushSpecifiers = function (node, nodes) {
|
var pushExportSpecifiers = function (node, nodes) {
|
||||||
_.each(node.specifiers, function (specifier) {
|
_.each(node.specifiers, function (specifier) {
|
||||||
var variableName = specifier.name || specifier.id;
|
var variableName = specifier.name || specifier.id;
|
||||||
|
|
||||||
@ -49,38 +46,22 @@ var pushSpecifiers = function (node, nodes) {
|
|||||||
MODULE_NAME: node.source.raw
|
MODULE_NAME: node.source.raw
|
||||||
}, true));
|
}, true));
|
||||||
} else {
|
} else {
|
||||||
var templateName;
|
nodes.push(util.template("exports-require-assign-key", {
|
||||||
|
|
||||||
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, {
|
|
||||||
VARIABLE_NAME: variableName.name,
|
VARIABLE_NAME: variableName.name,
|
||||||
MODULE_NAME: node.source.raw,
|
MODULE_NAME: node.source.raw,
|
||||||
KEY: specifier.id
|
KEY: specifier.id
|
||||||
}, true));
|
}, true));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (variableName.name === "default") {
|
nodes.push(util.template("exports-assign", {
|
||||||
nodes.push(util.template("exports-default", {
|
VALUE: specifier.id,
|
||||||
VALUE: specifier.id
|
KEY: variableName
|
||||||
}, true));
|
}, 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;
|
var declar = node.declaration;
|
||||||
|
|
||||||
if (node.default) {
|
if (node.default) {
|
||||||
@ -111,9 +92,9 @@ exports.ExportDeclaration = function (node) {
|
|||||||
var nodes = [];
|
var nodes = [];
|
||||||
|
|
||||||
if (node.declaration) {
|
if (node.declaration) {
|
||||||
pushDeclaration(node, nodes);
|
pushExportDeclaration(node, nodes);
|
||||||
} else {
|
} else {
|
||||||
pushSpecifiers(node, nodes);
|
pushExportSpecifiers(node, nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nodes;
|
return nodes;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "6to5",
|
"name": "6to5",
|
||||||
"description": "Turn ES6 code into vanilla ES5 with source maps and no runtime",
|
"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>",
|
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||||
"homepage": "https://github.com/sebmck/6to5",
|
"homepage": "https://github.com/sebmck/6to5",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@ -1,21 +1,21 @@
|
|||||||
module.exports = exports = 42;
|
exports.default = 42;
|
||||||
module.exports = exports = {};
|
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() {
|
function Anonymous() {
|
||||||
}
|
}
|
||||||
return Anonymous;
|
return Anonymous;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
module.exports = exports = function foo () {}
|
exports.default = function foo () {}
|
||||||
|
|
||||||
module.exports = exports = function () {
|
exports.default = function () {
|
||||||
function foo() {
|
function foo() {
|
||||||
}
|
}
|
||||||
return foo;
|
return foo;
|
||||||
|
|||||||
@ -11,12 +11,12 @@ exports.bar = require("foo").bar;
|
|||||||
|
|
||||||
exports.bar = require("foo").foo;
|
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;
|
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;
|
exports.bar = foo;
|
||||||
|
|
||||||
module.exports = exports = foo;
|
exports.default = foo;
|
||||||
|
|
||||||
module.exports = exports = foo;
|
exports.default = foo;
|
||||||
exports.bar = bar;
|
exports.bar = bar;
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
var foo = require("foo");
|
var foo = require("foo").default;
|
||||||
var foo = require("foo");
|
var foo = require("foo").default;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
var foo = require("foo");
|
var foo = require("foo").default;
|
||||||
var xyz = require("foo").baz;
|
var xyz = require("foo").baz;
|
||||||
|
|
||||||
var foo = require("foo");
|
var foo = require("foo").default;
|
||||||
var bar = require("foo");
|
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");
|
require("foo");
|
||||||
var fooBar = require("foo-bar");
|
require("foo-bar");
|
||||||
var fooBar = require("./directory/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