Compare commits

...

20 Commits

Author SHA1 Message Date
Sebastian McKenzie
6a88e05362 v1.12.17 2014-11-16 19:29:25 +11:00
Sebastian McKenzie
e3bd2dff8d remove unused path variable 2014-11-16 19:27:49 +11:00
Sebastian McKenzie
ef82171254 update amd/umd modules documentation 2014-11-16 19:27:15 +11:00
Sebastian McKenzie
00d94fd810 update changelog with additional new options 2014-11-16 19:26:03 +11:00
Sebastian McKenzie
d929d3c5eb remove duplicate i variable from traverse 2014-11-16 19:24:58 +11:00
Sebastian McKenzie
5c1ee86b97 remove filenameRelative from bin/6to5* since it's unneccesary 2014-11-16 19:24:47 +11:00
Sebastian McKenzie
5409691a3a update umd and amd tests with new moduleName option 2014-11-16 19:22:37 +11:00
Sebastian McKenzie
24964ac454 add filenameRelative to bin/6to5* 2014-11-16 19:20:08 +11:00
Sebastian McKenzie
faa81ab85b add 1.12.17 changelog 2014-11-16 19:19:57 +11:00
Sebastian McKenzie
d4bc082bb9 add new filenameRelative, sourceRoot and moduleRoot option documentation 2014-11-16 19:19:46 +11:00
Sebastian McKenzie
3777af6bbd add filenameRelative default and make sourceFileName and sourceMapName inherit form it 2014-11-16 19:19:25 +11:00
Sebastian McKenzie
1f258e9e9c add sourceRoot to source map 2014-11-16 19:19:07 +11:00
Sebastian McKenzie
50333c879c add comments and change single quotes in amd formatter getModuleName 2014-11-16 19:18:56 +11:00
Sebastian McKenzie
105e6ac379 add filenameRelative to tests 2014-11-16 19:18:30 +11:00
Sebastian McKenzie
dadab64e39 Merge pull request #176 from darvelo/master
Generate moduleNames for AMD/UMD
2014-11-16 19:00:56 +11:00
Sebastian McKenzie
2b82f2bcc2 ignore unknown nodes in traversal 2014-11-16 18:52:54 +11:00
Sebastian McKenzie
f1183505b1 optimise traverse, improves traversal speed by 50% 2014-11-16 18:50:07 +11:00
Sebastian McKenzie
fa3b24e5b4 don't lazy set templates, can't even remember why i did this 2014-11-16 18:49:29 +11:00
Sebastian McKenzie
5789447068 add loc option to exec test 2014-11-16 18:48:32 +11:00
David Arvelo
f1f7321590 Generate moduleNames for AMD/UMD 2014-11-16 02:38:00 -05:00
33 changed files with 123 additions and 67 deletions

View File

@@ -1,3 +1,8 @@
# 1.12.17
* Add `moduleName`, `sourceRoot` and `filenameRelative` options - thanks @darvelo!
* Traversal optimisations.
# 1.12.16
* Fix comments not being retained from `MethodDefinition` in classes.

View File

@@ -66,7 +66,7 @@ export function bar() {
**Out**
```javascript
define(["exports", "foo"], function (exports, _foo) {
define("filename", ["exports", "foo"], function (exports, _foo) {
exports.bar = bar;
var foo = _foo.default;
@@ -94,7 +94,7 @@ export function bar() {
```javascript
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
define("filename", ["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}
@@ -111,7 +111,6 @@ export function bar() {
### Ignore
**In**
```javascript

View File

@@ -83,6 +83,10 @@ to5.transformFile("filename.js", options, function (err, result) {
// Default: "unknown"
filename: "filename",
// Filename relative to `sourceRoot`
// Default: `filename` option.
filenameRelative: "",
// List of transformers to EXCLUDE.
// Run `6to5 --help` to see a full list of transformers.
blacklist: [],
@@ -103,13 +107,20 @@ to5.transformFile("filename.js", options, function (err, result) {
sourceMap: true,
// Set `file` on returned source map.
// Default: `filename` option.
// Default: `filenameRelative` option.
sourceMapName: "filename",
// Set `sources[0]` on returned source map.
// Default: `filename` option.
// Default: `filenameRelative` option.
sourceFileName: "filename",
// The root from which all sources are relative
sourceRoot: "assets/scripts",
// Optional prefix for the AMD module formatter that will be prepend to the
// filename on module definitions
moduleRoot: "my-app",
// 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

View File

@@ -39,8 +39,12 @@ File.normaliseOptions = function (opts) {
opts.filename = opts.filename.replace(/\\/g, "/");
_.defaults(opts, {
sourceFileName: opts.filename,
sourceMapName: opts.filename
filenameRelative: opts.filename
});
_.defaults(opts, {
sourceFileName: opts.filenameRelative,
sourceMapName: opts.filenameRelative
});
if (opts.runtime === true) {

View File

@@ -9,7 +9,8 @@ function SourceMap(position, opts, code) {
if (opts.sourceMap) {
this.map = new sourceMap.SourceMapGenerator({
file: opts.sourceMapName
file: opts.sourceMapName,
sourceRoot: opts.sourceRoot
});
this.map.setSourceContent(opts.sourceFileName, code);

View File

@@ -29,12 +29,41 @@ 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"), [names, container]);
var call = t.callExpression(t.identifier("define"), [t.literal(moduleName), names, container]);
program.body = [t.expressionStatement(call)];
};
AMDFormatter.prototype.getModuleName = function () {
var opts = this.file.opts;
var filenameRelative = opts.filenameRelative;
var moduleName = "";
if (opts.moduleRoot) {
moduleName = opts.moduleRoot + "/";
}
if (!opts.filenameRelative) {
return moduleName + opts.filename.replace(/^\//, "");
}
if (opts.sourceRoot) {
// remove sourceRoot from filename
var sourceRootRegEx = new RegExp("^" + opts.sourceRoot + "\/?");
filenameRelative = filenameRelative.replace(sourceRootRegEx, "");
}
// remove extension
filenameRelative = filenameRelative.replace(/\.(.*?)$/, "");
moduleName += filenameRelative;
return moduleName;
};
AMDFormatter.prototype._push = function (node) {
var id = node.source.value;
var ids = this.ids;

View File

@@ -32,8 +32,10 @@ UMDFormatter.prototype.transform = function (ast) {
// runner
var moduleName = this.getModuleName();
var runner = util.template("umd-runner-body", {
AMD_ARGUMENTS: t.arrayExpression([t.literal("exports")].concat(names)),
AMD_ARGUMENTS: [t.literal(moduleName), t.arrayExpression([t.literal("exports")].concat(names))],
COMMON_ARGUMENTS: names.map(function (name) {
return t.callExpression(t.identifier("require"), [name]);

View File

@@ -29,25 +29,32 @@ function traverse(parent, callbacks, opts) {
// normalise callbacks
if (_.isFunction(callbacks)) callbacks = { enter: callbacks };
_.each(keys, function (key) {
for (var i in keys) {
var key = keys[i];
var nodes = parent[key];
if (!nodes) return;
if (!nodes) continue;
var updated = false;
var handle = function (obj, key) {
var node = obj[key];
if (!node) return;
// type is blacklisted
if (_.contains(blacklistTypes, node.type)) return;
if (blacklistTypes.indexOf(node.type) > -1) return;
// replace node
var maybeReplace = function (result) {
if (result === false) return;
if (result != null) node = obj[key] = result;
if (result != null) {
updated = true;
node = obj[key] = result;
}
};
//
var opts2 = _.clone(opts);
var opts2 = { scope: opts.scope, blacklist: opts.blacklist };
if (t.isScope(node)) opts2.scope = new Scope(opts.scope, node);
// enter
@@ -69,15 +76,15 @@ function traverse(parent, callbacks, opts) {
};
if (_.isArray(nodes)) {
_.each(nodes, function (node, i) {
for (i in nodes) {
handle(nodes, i);
});
}
parent[key] = _.flatten(parent[key]);
if (updated) parent[key] = _.flatten(parent[key]);
} else {
handle(parent, key);
}
});
}
}
traverse.removeProperties = function (tree) {

View File

@@ -276,9 +276,5 @@ try {
} catch (err) {
if (err.code !== "MODULE_NOT_FOUND") throw err;
Object.defineProperty(exports, "templates", {
get: function () {
return exports.templates = loadTemplates();
}
});
exports.templates = loadTemplates();
}

View File

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

View File

@@ -48,8 +48,9 @@ exports.get = function (entryName) {
var execLoc = taskDir + "/exec.js";
var taskOpts = _.merge({
sourceFileName: actualLocAlias,
sourceMapName: expectLocAlias
filenameRelative: expectLocAlias,
sourceFileName: actualLocAlias,
sourceMapName: expectLocAlias
}, _.cloneDeep(suite.options));
var taskOptsLoc = taskDir + "/options.json";
@@ -60,6 +61,7 @@ exports.get = function (entryName) {
disabled: taskName[0] === ".",
options: taskOpts,
exec: {
loc: execLoc,
code: readFile(execLoc),
filename: execLocAlias,
},

View File

@@ -1,4 +1,4 @@
define(["exports"], function (exports) {
define("modules-amd/exports-default/expected", ["exports"], function (exports) {
"use strict";
exports["default"] = 42;
@@ -12,4 +12,4 @@ define(["exports"], function (exports) {
var Foo = function Foo() {};
exports["default"] = Foo;
});
});

View File

@@ -1,4 +1,4 @@
define(["exports", "foo"], function (exports, _foo) {
define("modules-amd/exports-from/expected", ["exports", "foo"], function (exports, _foo) {
"use strict";
(function (obj) {
@@ -14,4 +14,4 @@ define(["exports", "foo"], function (exports, _foo) {
exports["default"] = _foo.foo;
exports["default"] = _foo.foo;
exports.bar = _foo.bar;
});
});

View File

@@ -1,4 +1,4 @@
define(["exports"], function (exports) {
define("modules-amd/exports-named/expected", ["exports"], function (exports) {
"use strict";
exports.foo = foo;
@@ -8,4 +8,4 @@ define(["exports"], function (exports) {
exports["default"] = foo;
exports["default"] = foo;
exports.bar = bar;
});
});

View File

@@ -1,4 +1,4 @@
define(["exports"], function (exports) {
define("modules-amd/exports-variable/expected", ["exports"], function (exports) {
"use strict";
exports.foo7 = foo7;
@@ -12,4 +12,4 @@ define(["exports"], function (exports) {
var foo8 = function foo8() {};
exports.foo8 = foo8;
});
});

View File

@@ -1,4 +1,4 @@
define(["exports", "./evens"], function (exports, _evens) {
define("modules-amd/hoist-function-exports/expected", ["exports", "./evens"], function (exports, _evens) {
"use strict";
exports.nextOdd = nextOdd;
@@ -12,4 +12,4 @@ define(["exports", "./evens"], function (exports, _evens) {
return !isEven(n);
};
})(isEven);
});
});

View File

@@ -1,6 +1,6 @@
define(["exports", "foo"], function (exports, _foo) {
define("modules-amd/imports-default/expected", ["exports", "foo"], function (exports, _foo) {
"use strict";
var foo = _foo["default"];
var foo = _foo["default"];
});
});

View File

@@ -1,4 +1,4 @@
define(["exports", "foo"], function (exports, _foo) {
define("modules-amd/imports-glob/expected", ["exports", "foo"], function (exports, _foo) {
"use strict";
var foo = _foo;

View File

@@ -1,6 +1,6 @@
define(["exports", "foo"], function (exports, _foo) {
define("modules-amd/imports-mixing/expected", ["exports", "foo"], function (exports, _foo) {
"use strict";
var foo = _foo["default"];
var xyz = _foo.baz;
});
});

View File

@@ -1,4 +1,4 @@
define(["exports", "foo"], function (exports, _foo) {
define("modules-amd/imports-named/expected", ["exports", "foo"], function (exports, _foo) {
"use strict";
var bar = _foo.bar;

View File

@@ -1,3 +1,3 @@
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
define("modules-amd/imports/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
"use strict";
});
});

View File

@@ -1,4 +1,4 @@
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
define("modules-amd/overview/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
"use strict";
var foo = _foo["default"];
@@ -9,4 +9,4 @@ define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports,
var test = exports.test = 5;
exports["default"] = test;
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports"], factory);
define("modules-umd/exports-default/expected", ["exports"], factory);
} else if (typeof exports !== "undefined") {
factory(exports);
}
@@ -18,4 +18,4 @@
var Foo = function Foo() {};
exports["default"] = Foo;
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
define("modules-umd/exports-from/expected", ["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}
@@ -20,4 +20,4 @@
exports["default"] = _foo.foo;
exports["default"] = _foo.foo;
exports.bar = _foo.bar;
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports"], factory);
define("modules-umd/exports-named/expected", ["exports"], factory);
} else if (typeof exports !== "undefined") {
factory(exports);
}
@@ -14,4 +14,4 @@
exports["default"] = foo;
exports["default"] = foo;
exports.bar = bar;
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports"], factory);
define("modules-umd/exports-variable/expected", ["exports"], factory);
} else if (typeof exports !== "undefined") {
factory(exports);
}
@@ -18,4 +18,4 @@
var foo8 = function foo8() {};
exports.foo8 = foo8;
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "./evens"], factory);
define("modules-umd/hoist-function-exports/expected", ["exports", "./evens"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("./evens"));
}
@@ -18,4 +18,4 @@
return !isEven(n);
};
})(isEven);
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
define("modules-umd/imports-default/expected", ["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}
@@ -9,4 +9,4 @@
var foo = _foo["default"];
var foo = _foo["default"];
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
define("modules-umd/imports-glob/expected", ["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
define("modules-umd/imports-mixing/expected", ["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}
@@ -9,4 +9,4 @@
var foo = _foo["default"];
var xyz = _foo.baz;
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
define("modules-umd/imports-named/expected", ["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}

View File

@@ -1,9 +1,9 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], factory);
define("modules-umd/imports/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar"));
}
})(function (exports, _foo, _fooBar, _directoryFooBar) {
"use strict";
});
});

View File

@@ -1,6 +1,6 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], factory);
define("modules-umd/overview/expected", ["exports", "foo", "foo-bar", "./directory/foo-bar"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar"));
}
@@ -15,4 +15,4 @@
var test = exports.test = 5;
exports["default"] = test;
});
});