diff --git a/bin/6to5/index.js b/bin/6to5/index.js index a76af2a6fd..9f41d92530 100755 --- a/bin/6to5/index.js +++ b/bin/6to5/index.js @@ -18,6 +18,7 @@ commander.option("-b, --blacklist [blacklist]", "Blacklist of transformers to NO commander.option("-o, --out-file [out]", "Compile all input files into a single file"); commander.option("-d, --out-dir [out]", "Compile an input directory of modules into an output directory"); commander.option("-c, --remove-comments", "Remove comments from the compiled code", false); +commander.option("-a, --amd-module-ids", "Insert module id in AMD modules", false); commander.on("--help", function(){ var outKeys = function (title, obj) { @@ -90,6 +91,7 @@ exports.opts = { whitelist: commander.whitelist, sourceMap: commander.sourceMaps || commander.sourceMapsInline, comments: !commander.removeComments, + amdModuleIds: commander.amdModuleIds, runtime: commander.runtime, modules: commander.modules }; diff --git a/doc/modules.md b/doc/modules.md index 781900a167..ff655c5119 100644 --- a/doc/modules.md +++ b/doc/modules.md @@ -66,7 +66,7 @@ export function bar() { **Out** ```javascript -define("filename", ["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (exports, _foo) { exports.bar = bar; var foo = _foo.default; @@ -77,6 +77,12 @@ define("filename", ["exports", "foo"], function (exports, _foo) { }); ``` +You can optionally specify to include the module id (using the `--amd-module-id` argument): + +```javascript +define("filename", ["exports", "foo"], function (exports, _foo) {}) +``` + ### UMD **In** @@ -94,7 +100,7 @@ export function bar() { ```javascript (function (factory) { if (typeof define === "function" && define.amd) { - define("filename", ["exports", "foo"], factory); + define(["exports", "foo"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo")); } diff --git a/doc/usage.md b/doc/usage.md index 02c845469b..ce51614591 100644 --- a/doc/usage.md +++ b/doc/usage.md @@ -123,6 +123,11 @@ to5.transformFile("filename.js", options, function (err, result) { // Default: `sourceRoot` option. moduleRoot: "my-app", + // If truthy, insert an explicit id for each defined AMD module. + // By default, AMD modules are anonymous. + // Default: false + amdModuleIds: true, + // Optionally replace all 6to5 helper declarations with a referenece to this // variable. If set to `true` then the default namespace is used "to5Runtime". // Default: false diff --git a/lib/6to5/file.js b/lib/6to5/file.js index c7222c989f..f1f0c42768 100644 --- a/lib/6to5/file.js +++ b/lib/6to5/file.js @@ -11,7 +11,7 @@ var _ = require("lodash"); function File(opts) { this.opts = File.normaliseOptions(opts); - this.moduleFormatter = this.getModuleFormatter(this.opts.modules); + this.moduleFormatter = this.getModuleFormatter(this.opts.modules, this.opts); this.declarations = {}; this.uids = {}; diff --git a/lib/6to5/transformation/modules/amd.js b/lib/6to5/transformation/modules/amd.js index d6e3f50d71..6b174ac376 100644 --- a/lib/6to5/transformation/modules/amd.js +++ b/lib/6to5/transformation/modules/amd.js @@ -29,10 +29,11 @@ AMDFormatter.prototype.transform = function (ast) { var params = _.values(this.ids); params.unshift(t.identifier("exports")); - var moduleName = this.getModuleName(); - var container = t.functionExpression(null, params, t.blockStatement(body)); - var call = t.callExpression(t.identifier("define"), [t.literal(moduleName), names, container]); + var defineArgs = [names, container]; + var moduleName = this.getModuleName(); + if (moduleName) defineArgs.unshift(t.literal(moduleName)); + var call = t.callExpression(t.identifier("define"), defineArgs); program.body = [t.expressionStatement(call)]; }; @@ -42,6 +43,10 @@ AMDFormatter.prototype.getModuleName = function () { var filenameRelative = opts.filenameRelative; var moduleName = ""; + if (!opts.amdModuleIds) { + return null; + } + if (opts.moduleRoot) { moduleName = opts.moduleRoot + "/"; } diff --git a/lib/6to5/transformation/modules/umd.js b/lib/6to5/transformation/modules/umd.js index c6777594e0..199de38024 100644 --- a/lib/6to5/transformation/modules/umd.js +++ b/lib/6to5/transformation/modules/umd.js @@ -31,10 +31,12 @@ UMDFormatter.prototype.transform = function (ast) { // runner + var defineArgs = [t.arrayExpression([t.literal("exports")].concat(names))]; var moduleName = this.getModuleName(); + if (moduleName) defineArgs.unshift(t.literal(moduleName)); var runner = util.template("umd-runner-body", { - AMD_ARGUMENTS: [t.literal(moduleName), t.arrayExpression([t.literal("exports")].concat(names))], + AMD_ARGUMENTS: defineArgs, COMMON_ARGUMENTS: names.map(function (name) { return t.callExpression(t.identifier("require"), [name]); diff --git a/test/fixtures/transformation/modules-amd/exports-default/expected.js b/test/fixtures/transformation/modules-amd/exports-default/expected.js index d7ccd703d9..9d46b7b13b 100644 --- a/test/fixtures/transformation/modules-amd/exports-default/expected.js +++ b/test/fixtures/transformation/modules-amd/exports-default/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/exports-default/expected", ["exports"], function (exports) { +define(["exports"], function (exports) { "use strict"; exports["default"] = 42; diff --git a/test/fixtures/transformation/modules-amd/exports-from/expected.js b/test/fixtures/transformation/modules-amd/exports-from/expected.js index dc955e9b43..04d83b65ca 100644 --- a/test/fixtures/transformation/modules-amd/exports-from/expected.js +++ b/test/fixtures/transformation/modules-amd/exports-from/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/exports-from/expected", ["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (exports, _foo) { "use strict"; (function (obj) { diff --git a/test/fixtures/transformation/modules-amd/exports-named/expected.js b/test/fixtures/transformation/modules-amd/exports-named/expected.js index e0ab3073db..e07a20d178 100644 --- a/test/fixtures/transformation/modules-amd/exports-named/expected.js +++ b/test/fixtures/transformation/modules-amd/exports-named/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/exports-named/expected", ["exports"], function (exports) { +define(["exports"], function (exports) { "use strict"; exports.foo = foo; diff --git a/test/fixtures/transformation/modules-amd/exports-variable/expected.js b/test/fixtures/transformation/modules-amd/exports-variable/expected.js index 55becc8094..b94e1dd338 100644 --- a/test/fixtures/transformation/modules-amd/exports-variable/expected.js +++ b/test/fixtures/transformation/modules-amd/exports-variable/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/exports-variable/expected", ["exports"], function (exports) { +define(["exports"], function (exports) { "use strict"; exports.foo7 = foo7; diff --git a/test/fixtures/transformation/modules-amd/hoist-function-exports/expected.js b/test/fixtures/transformation/modules-amd/hoist-function-exports/expected.js index 4945e4e62a..7d072c6f35 100644 --- a/test/fixtures/transformation/modules-amd/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/modules-amd/hoist-function-exports/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/hoist-function-exports/expected", ["exports", "./evens"], function (exports, _evens) { +define(["exports", "./evens"], function (exports, _evens) { "use strict"; exports.nextOdd = nextOdd; diff --git a/test/fixtures/transformation/modules-amd/imports-default/expected.js b/test/fixtures/transformation/modules-amd/imports-default/expected.js index fbd6370eff..e13da123e2 100644 --- a/test/fixtures/transformation/modules-amd/imports-default/expected.js +++ b/test/fixtures/transformation/modules-amd/imports-default/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/imports-default/expected", ["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (exports, _foo) { "use strict"; var foo = _foo["default"]; diff --git a/test/fixtures/transformation/modules-amd/imports-glob/expected.js b/test/fixtures/transformation/modules-amd/imports-glob/expected.js index 5b62640587..130bb4fd19 100644 --- a/test/fixtures/transformation/modules-amd/imports-glob/expected.js +++ b/test/fixtures/transformation/modules-amd/imports-glob/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/imports-glob/expected", ["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (exports, _foo) { "use strict"; var foo = _foo; diff --git a/test/fixtures/transformation/modules-amd/imports-mixing/expected.js b/test/fixtures/transformation/modules-amd/imports-mixing/expected.js index 116f8c16a9..5ff7a48899 100644 --- a/test/fixtures/transformation/modules-amd/imports-mixing/expected.js +++ b/test/fixtures/transformation/modules-amd/imports-mixing/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/imports-mixing/expected", ["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (exports, _foo) { "use strict"; var foo = _foo["default"]; diff --git a/test/fixtures/transformation/modules-amd/imports-named/expected.js b/test/fixtures/transformation/modules-amd/imports-named/expected.js index aef8e85666..5a8e29831e 100644 --- a/test/fixtures/transformation/modules-amd/imports-named/expected.js +++ b/test/fixtures/transformation/modules-amd/imports-named/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/imports-named/expected", ["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (exports, _foo) { "use strict"; var bar = _foo.bar; diff --git a/test/fixtures/transformation/modules-amd/imports/expected.js b/test/fixtures/transformation/modules-amd/imports/expected.js index 5fdc461b60..7191917e73 100644 --- a/test/fixtures/transformation/modules-amd/imports/expected.js +++ b/test/fixtures/transformation/modules-amd/imports/expected.js @@ -1,3 +1,3 @@ -define("modules-amd/imports/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { +define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { "use strict"; }); diff --git a/test/fixtures/transformation/modules-amd/overview/expected.js b/test/fixtures/transformation/modules-amd/overview/expected.js index c173c7180b..5fc0d32601 100644 --- a/test/fixtures/transformation/modules-amd/overview/expected.js +++ b/test/fixtures/transformation/modules-amd/overview/expected.js @@ -1,4 +1,4 @@ -define("modules-amd/overview/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { +define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { "use strict"; var foo = _foo["default"]; diff --git a/test/fixtures/transformation/modules-umd/exports-default/expected.js b/test/fixtures/transformation/modules-umd/exports-default/expected.js index 70bba353e9..6bf0a88c3f 100644 --- a/test/fixtures/transformation/modules-umd/exports-default/expected.js +++ b/test/fixtures/transformation/modules-umd/exports-default/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/exports-default/expected", ["exports"], factory); + define(["exports"], factory); } else if (typeof exports !== "undefined") { factory(exports); } diff --git a/test/fixtures/transformation/modules-umd/exports-from/expected.js b/test/fixtures/transformation/modules-umd/exports-from/expected.js index 9c8d1c9006..c4015dbf8f 100644 --- a/test/fixtures/transformation/modules-umd/exports-from/expected.js +++ b/test/fixtures/transformation/modules-umd/exports-from/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/exports-from/expected", ["exports", "foo"], factory); + define(["exports", "foo"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo")); } diff --git a/test/fixtures/transformation/modules-umd/exports-named/expected.js b/test/fixtures/transformation/modules-umd/exports-named/expected.js index 1ab16c49ec..ae16b5380b 100644 --- a/test/fixtures/transformation/modules-umd/exports-named/expected.js +++ b/test/fixtures/transformation/modules-umd/exports-named/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/exports-named/expected", ["exports"], factory); + define(["exports"], factory); } else if (typeof exports !== "undefined") { factory(exports); } diff --git a/test/fixtures/transformation/modules-umd/exports-variable/expected.js b/test/fixtures/transformation/modules-umd/exports-variable/expected.js index a8d5e18374..d381823150 100644 --- a/test/fixtures/transformation/modules-umd/exports-variable/expected.js +++ b/test/fixtures/transformation/modules-umd/exports-variable/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/exports-variable/expected", ["exports"], factory); + define(["exports"], factory); } else if (typeof exports !== "undefined") { factory(exports); } diff --git a/test/fixtures/transformation/modules-umd/hoist-function-exports/expected.js b/test/fixtures/transformation/modules-umd/hoist-function-exports/expected.js index b7488ee3fd..bd34bf40d1 100644 --- a/test/fixtures/transformation/modules-umd/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/modules-umd/hoist-function-exports/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/hoist-function-exports/expected", ["exports", "./evens"], factory); + define(["exports", "./evens"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("./evens")); } diff --git a/test/fixtures/transformation/modules-umd/imports-default/expected.js b/test/fixtures/transformation/modules-umd/imports-default/expected.js index d3c76e8453..10ec822646 100644 --- a/test/fixtures/transformation/modules-umd/imports-default/expected.js +++ b/test/fixtures/transformation/modules-umd/imports-default/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/imports-default/expected", ["exports", "foo"], factory); + define(["exports", "foo"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo")); } diff --git a/test/fixtures/transformation/modules-umd/imports-glob/expected.js b/test/fixtures/transformation/modules-umd/imports-glob/expected.js index 698098f529..3fdf1b3f94 100644 --- a/test/fixtures/transformation/modules-umd/imports-glob/expected.js +++ b/test/fixtures/transformation/modules-umd/imports-glob/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/imports-glob/expected", ["exports", "foo"], factory); + define(["exports", "foo"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo")); } diff --git a/test/fixtures/transformation/modules-umd/imports-mixing/expected.js b/test/fixtures/transformation/modules-umd/imports-mixing/expected.js index 97e6cff72f..35f4b65e7f 100644 --- a/test/fixtures/transformation/modules-umd/imports-mixing/expected.js +++ b/test/fixtures/transformation/modules-umd/imports-mixing/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/imports-mixing/expected", ["exports", "foo"], factory); + define(["exports", "foo"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo")); } diff --git a/test/fixtures/transformation/modules-umd/imports-named/expected.js b/test/fixtures/transformation/modules-umd/imports-named/expected.js index ee4eac59ec..ea293d87d8 100644 --- a/test/fixtures/transformation/modules-umd/imports-named/expected.js +++ b/test/fixtures/transformation/modules-umd/imports-named/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/imports-named/expected", ["exports", "foo"], factory); + define(["exports", "foo"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo")); } diff --git a/test/fixtures/transformation/modules-umd/imports/expected.js b/test/fixtures/transformation/modules-umd/imports/expected.js index 8cc53c4513..81b4069c95 100644 --- a/test/fixtures/transformation/modules-umd/imports/expected.js +++ b/test/fixtures/transformation/modules-umd/imports/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/imports/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], factory); + define(["exports", "foo", "foo-bar", "./directory/foo-bar"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar")); } diff --git a/test/fixtures/transformation/modules-umd/overview/expected.js b/test/fixtures/transformation/modules-umd/overview/expected.js index 1f1b0c4165..6a6a53fdc5 100644 --- a/test/fixtures/transformation/modules-umd/overview/expected.js +++ b/test/fixtures/transformation/modules-umd/overview/expected.js @@ -1,6 +1,6 @@ (function (factory) { if (typeof define === "function" && define.amd) { - define("modules-umd/overview/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], factory); + define(["exports", "foo", "foo-bar", "./directory/foo-bar"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar")); }