Quantifying Default Exports

Brian Di Palma offler at gmail.com
Mon Jul 21 07:05:58 PDT 2014


It's using traceur and building the modules to CJS, the project uses
other non transpiled CJS modules.

The only thing traceur could do here is compile the imports into a
check for the named export `default` and use that if it exists.
If it doesn't then simply return the CJS module object.

Here is the output from traceur

https://github.com/briandipalma/global-compiler/blob/master/out/index.js

The relevant line would be

`var minimist = require('minimist');`

For default import from a CJS module you'd need to output

`
var minimist = require('minimist');
if (minimist.default) {
 minimist = minimist.default;
}
`

Is that what you think traceur should do?

On Mon, Jul 21, 2014 at 2:34 PM, Juan Ignacio Dopazo
<jdopazo at yahoo-inc.com> wrote:
>
>> On Saturday, July 19, 2014 1:53 PM, Brian Di Palma <offler at gmail.com> wrote:
>
>> When an npm package exports a named identifier it's trivial to use it
> in an ES6 module.
>
> import {
>     parse,
>     print
> } from 'recast';
>
>> When on the other hand it sets its export on `module.exports` default
> exports provide no help at all.
>
> This sounds like an issue in your transpiler. Ideally CJS modules inside projects written using ES6 modules should be treated as modules that default export an object. CJS modules don't have the same static semantics as their ES6 counterpart, so they should be treated as mutable objects. An ES6 Loader would do the same when loading CJS modules.
>
> Juan


More information about the es-discuss mailing list