* Spec compatibility for template literals. * Update preset-es2015 `spec` expected case. * Prevent array mutability by replacing `shift`. * Fix condition for single item. * Group concats to ensure toPrimitive sequence. * Update function test case. * Add semi for function test case. * Simplify concat call expressions creating. * Fix some cases with multiple idengifiers. * Add test case with different literals. * Add test case for `Symbol()` and toPrimitive order * Add actual literal case. * Add minNodeVersion to template literals order. * Flip the logical expression. * Update README for template literals spec option. * docs [skip ci]
babel-plugin-transform-es2015-template-literals
Compile ES2015 template literals to ES5
Example
In
`foo${bar}`;
Out
"foo" + bar;
Installation
npm install --save-dev babel-plugin-transform-es2015-template-literals
Usage
Via .babelrc (Recommended)
.babelrc
Without options:
{
"plugins": ["transform-es2015-template-literals"]
}
With options:
{
"plugins": [
["transform-es2015-template-literals", {
"loose": true,
"spec": true
}]
]
}
Via CLI
babel --plugins transform-es2015-template-literals script.js
Via Node API
require("babel-core").transform("code", {
plugins: ["transform-es2015-template-literals"]
});
Options
loose
boolean, defaults to false.
In loose mode, tagged template literal objects aren't frozen.
spec
boolean, defaults to false.
This option combines all template literal expressions and quasis with String.prototype.concat. It will handle cases with Symbol.toPrimitive correctly and throw correctly if template literal expression is a Symbol(). See babel/babel#5791.
In
`foo${bar}baz${quux}${1}`;
Out
"foo".concat(bar, "baz").concat(quux, 1);