I was really slow on picking up Babel too. But I've been using Babel 5.x in production for six months without errors - main things were docs that referred to old versions of babel and babelify.
I needed to plug this in the package.json of my private modules:
Node.js is moving pretty fast at this point, after the io.js merger. I can understand using Babel to provide a unified, modern language API for browser applications, as there are so few guarantees you can make about a client's browser, but there already is a single API target for server javascript for any given version of node. Unlike browser JS, you can guarantee that the server development environment and the production environment will execute on the same runtime. Meanwhile, I don't trust that every Babel implementation of an unstable language feature will match the final official implementation. If it did, someone would just merge babel's shims into node and call it a day.
To some extent, yes. In some of my projects I decided to avoid using Babel and just limit myself to Node's (new) features. The advantages of not having a build step for the backend js is sometimes worth it.
However, there are so many cases where Babel is useful, or turns out to be 'necessary', that I'm considering just using Babel by default again.
Some examples:
- JSX for using React in the back-end (almost a default for me nowadays)
- async/await for async-heavy code
- a miscellaneous few still-unsupported ES2015 features that occasionally are sorely missed
And finally, it's happing more and more regularly that I end up wanting to use some server-side modules on the client-side, in which case I need to set up Babel anyways.
That said, if I'm pretty sure I'm not going to need Babel, I still try to leave it out. It adds complexity that I'd rather avoid.
I needed to plug this in the package.json of my private modules: