Transpiling
Introduction#
Transpiling is the process of interpreting certain programming languages and translating it to a specific target language. In this context, transpiling will take compile-to-JS languages and translate them into the target language of Javascript.
Remarks#
Transpiling is the process of converting source code to source code, and this is a common activity in JavaScript development.
The features available in common JavaScript applications (Chrome, Firefox, NodeJS, etc.) often lag behind the latest ECMAScript specifications (ES6/ES2015, ES7/ES2016, etc.). Once a specification has been approved, it will most certainly be available natively in future versions of JavaScript applications.
Rather than waiting for new JavaScript releases, engineers can start writing code that will run natively in the future (future-proofing) by using a compiler to convert code written for newer specifications into code compatible with existing applications. Common transpilers include Babel and Google Traceur.
Transpilers can also be used to convert from another language like TypeScript or CoffeeScript to regular, “vanilla” JavaScript. In this case, transpiling converts from one language to a different language.
Introduction to Transpiling
Examples
ES6/ES2015 to ES5 (via Babel):
This ES2015 syntax
// ES2015 arrow function syntax
[1,2,3].map(n => n + 1);
is interpreted and translated to this ES5 syntax:
// Conventional ES5 anonymous function syntax
[1,2,3].map(function(n) {
return n + 1;
});
CoffeeScript to Javascript (via built-in CoffeeScript compiler):
This CoffeeScript
# Existence:
alert "I knew it!" if elvis?
is interpreted and translated to Javascript:
if (typeof elvis !== "undefined" && elvis !== null) {
alert("I knew it!");
}
How do I transpile?
Most compile-to-Javascript languages have a transpiler built-in (like in CoffeeScript or TypeScript). In this case, you may just need to enable the language’s transpiler via config settings or a checkbox. Advanced settings can also be set in relation to the transpiler.
For ES6/ES2016-to-ES5 transpiling, the most prominent transpiler being used is Babel.
Why should I transpile?
The most cited benefits include:
- The ability to use newer syntax reliably
- Compatibility among most, if not all browsers
- Usage of missing/not yet native features to Javascript via languages like CoffeeScript or TypeScript
Start using ES6/7 with Babel
Browser support for ES6 is growing, but to be sure your code will work on environments that dont fully support it, you can use Babel, the ES6/7 to ES5 transpiler, try it out!
If you would like to use ES6/7 in your projects without having to worry about compatibility, you can use Node and Babel CLI
Quick setup of a project with Babel for ES6/7 support |
---|
-
Download and install Node
-
Go to a folder and create a project using your favourite command line tool
~ npm init
-
Install Babel CLI
~ npm install —save-dev babel-cli ~ npm install —save-dev babel-preset-es2015
-
Create a
scripts
folder to store your.js
files, and then adist/scripts
folder where the transpiled fully compatible files will be stored. -
Create a
.babelrc
file in the root folder of your project, and write this on it{ “presets”: [“es2015”] }
-
Edit your
package.json
file (created when you rannpm init
) and add thebuild
script to thescripts
property:{ … “scripts”: { … , “build”: “babel scripts —out-dir dist/scripts” }, … }
-
Enjoy programming in ES6/7
-
Run the following to transpile all your files to ES5
~ npm run build
For more complex projects you might want to take a look at Gulp or Webpack