Hacker News new | ask | show | jobs
by arcatek 4129 days ago
The last part is missing : how should non-ES6 Node scripts require the ES6 components ?
3 comments

The transpilers will compile the module into an object you can require normally. The default export is under { "default": ... } and the other exported properties are under their exported names.

The real fun part is going the other direction: using non-ES6 modules inside ES6 code. Using 6to5ify (now babelify), I had the issue that I couldn't access the `exports` variable, only properties on it.

I've not had any problems with importing non-ES6 modules into ES6 code. To use Express for example you can simply do `import express from 'express'`. If you only need access to one or two properties of the exported object you can use the destructuring syntax to just get references to them: `import { hash, compare } from 'bcrypt'`
You're right, this would have been a good final section. However it's pretty straightforward as Babel compiles `export` syntax to Node's `module.exports` format by default which means you can require them in the usual way. It also compiles `import` syntax to the normal `require` calls.
They should simply use standard node js require. The author forgot to specify common js interop option in babel.

babel --modules common -d lib/ src/

That's actually the default, but you can specify a different module system if you like. https://babeljs.io/docs/usage/modules/