Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

buble

bublejs526kMIT0.20.0TypeScript support: definitely-typed

The blazing fast, batteries-included ES2015 compiler

javascript, transpilation, compilation, esnext, es2015, es2017, es6, es7

readme

Maintenance status

Bublé was created when ES2015 was still the future. Nowadays, all modern browsers support all of ES2015 and (in some cases) beyond. Unless you need to support IE11, you probably don't need to use Bublé to convert your code to ES5.

Since IE11 is an unfortunate reality for some people, we will continue to release bugfixes, but new features won't be added unless in exceptional circumstances.


Bublé

The blazing fast, batteries-included ES2015 compiler

Quickstart

Via the command line...

npm install -g buble
buble input.js > output.js

...or via the JavaScript API:

var buble = require( 'buble' );
var result = buble.transform( source ); // { code: ..., map: ... }

License

MIT

changelog

buble changelog

0.20.0 (2020-03-26)

  • Breaking: Drop Node v4 && v6 testing on CI; Buble will likely continue to work on these versions, but support for them is no longer actively maintained. #250
  • Fix recognition of catch-declared variables (#237)
  • Prevent labels from being renamed due to let/const transpilation. (#236)
  • Fix scoping of variables declared in for loops. (#233)
  • Fix an error when transpiling for (a[0] in b). (#232)
  • Fix an error when transpiling for with an empty init. (#226)
  • Fix let/const transpilation when combined with shorthand properties. (#229)
  • Fix JSX not respecting advanced white space characters. (#218)
  • Fix name collision when transpiling A = class extends A {}. (#209)
  • Fix os-homedir dependency warnings on install. (#207)
  • Upgrade dependencies to their latest patch versions, fixing security audit warnings. (#250)

0.19.8 (2019-07-03)

  • Allow shebang (#191)
  • Fix tagged template literal in certain cases (#190)
  • Fix removing of trailing commas in certain cases (#194)
  • Make JSX Fragment configurable (#198)
  • Fix transpiling string-keyed properties with whitespaces before colons (#200)

0.19.7 (2019-03-11)

  • Throw error on dynamic import expression if transform is not disabled
  • Throw error on async and await if transform is not disabled
  • Allow await outside of functions
  • Don't bundle acorn dependencies (#165)
  • Inline spread elements where possible (#179)
  • Correctly handle operator precedence for array spread (#177)
  • Correctly pass-through async arrow functions and methods (#109, #146)
  • Move repository to https://github.com/bublejs/buble
  • Exclude non-string keys from rest properties (#149)

0.19.6 (2018-10-23)

  • Fix class expressions with heritage in arrow functions (#150)
  • Support objectAssign: true in API as a short-hand for objectAssign: "Object.assign"
  • Bundle all acorn dependencies (for now), but no others (#159)

0.19.5 (2018-10-16)

  • Transpile U+2028 and U+2029 according to stage 4 proposal json-superset
  • Add /*@__PURE__*/ annotations to transpiled classes
  • Update support data
  • Allow disabling spread properties transpiling
  • Fix specific edge case with spread and computed properties (#139)
  • Allow global return statements
  • Don't create unnecessary this aliases with loops (#120)
  • Don't allow getters and setters if IE8 is transpile target (#20)

0.19.4 (2018-10-06)

  • Fix transpiling destructuring assignments in brace-less if statement's bodies (#152)
  • Fix transpiling const and let after brace-less if statements (#132)
  • Transpile binary and octal number literals if base prefix is upper-case (#74)
  • Mark classes as supported in Chrome 48
  • Mark destructuring of arrow function arguments as not supported in Firefox < 52

0.19.3 (2018-02-13)

  • Make sure browser builds are actually valid ES5 (except for the modules build)

0.19.2 (2018-02-12)

  • Correctly specify browser field in package.json (#107)
  • Fix a compile error about using super outside of class methods
  • Fix transpiling rest properties

0.19.1 (2018-02-10)

  • Fix transpiling let and const if arrow functions are not transpiled (i. e. node: 4)

0.19.0 (2018-02-10)

Enhancements

  • Add support information for new environments
  • Add (pass-thru) support for async generators and for-async-of
  • Add support for dynamic import (#102)
  • Add support for JSX fragments (#62)
  • Add unpkg build and transpile browser build for older environments (#93)
  • Reuse tagged template quasis (#67)
  • Transpile trailing commas in new expressions (#63)
  • Add support for destructuring in for-in and for-of loop heads
  • Add support for destructuring in catch clause params
  • Add support for rest properties in assignments

Fixes

  • Don't remove commas in comments after the last argument (#89)
  • Support transformations involving aliasing of variables in block scopes (#60)
  • Evaluate expression only once with inline default pattern elements
  • Fix nested object and array patterns, rest properties and default values in for loop heads
  • Only put own properties in rest properties
  • Improve declaration of helper variables
  • Allow modification of mutable variables that shadow a const before declaration (#59)
  • Correctly detect modification of immutable variables through destructuring assignments
  • In object methods, support destructuring declarations initialized with a variable having the same name as the method (#86)
  • Fix properties with string literal keys after computed properties (#91)
  • Fix methods after computed properties (#101)
  • Fix short-hand generator methods
  • Fix template literals in array after spread element (#105)
  • Fix arrow functions in array after spread element (#100)
  • Fix arrow functions in new expression after spread element (#100)
  • Restore decoding HTML entities in JSX (#104)
  • Correct various entries in support matrix

0.18.0

  • Allow anonymous functions and classes as default exports (#37)
  • Handle non-breaking spaces in JSX (#46)
  • Allow anonymous classes to be assigned to properties (#33)
  • Add trailingFunctionCommas transformation (#50)

0.17.3

  • Move chalk to dependencies (#35)

0.17.2

  • Fix nested template literals regression (#39)

0.17.1

  • Error on nested rest elements (#31)
  • Allow destructuring with computed properties (#34)

0.17.0

  • Update dependencies
  • Transpile arrow functions unconditionally if spread arguments need transpilation (#22)
  • Better object spread support (#25)
  • Rest properties (#30)
  • Fix (#24)

0.16.0

  • Allow truthy dash-cased props (#2)
  • Make class accessors configurable (#3)
  • Support JSX pragma comments (#5)
  • Handle JSX with no spaces between attributes (#6)

0.15.2

  • Don't create function names for object methods with namedFunctionExpressions: false
  • Simplify destructuring assignment statements
  • Give unique names to methods that shadow free variables (#166)

0.15.1

  • Fix Object.assign regression (#163)

0.15.0

  • More informative CLI errors when input comes from stdin (#155)
  • Prevent PhantomJS shadowing errors (#154)
  • Use local register.js in tests (#153)
  • Correct CLI output filename with .jsx input (#151)
  • Fix whitespace removal bug (#159)
  • Allow computed properties in object destructuring (#146)
  • Support rest elements in array destructuring (#147)
  • Fix array swap assignment expression (#148)
  • Allow template string as destructuring default (#145)
  • Support multiple returning loops with block scoping (cbc17ad5e)
  • Fix super with spread arguments (#129)
  • Arrow function returning computed property (#126)
  • Allow computed property and object spread to coexist (#144)
  • Add namedFunctionExpressions option to prevent scope leak in old browsers (#130)
  • Fix exponentiation assignment edge case (#122)
  • Allow CLI --output flag to work with stdin input

0.14.3

  • Prevent crashing on Node versions more recent than the latest 'supported' version (#102)

0.14.2

  • Allow .jsx file extension (#127)
  • Handle trailing comma in spread operator (#133)
  • Allow empty code blocks in JSX (#131)
  • Allow computed shorthand function name with spread in body (#135)
  • Add --objectAssign CLI option (#113)
  • Allow numeric literals as shorthand method keys (#139)

0.14.1

  • fix initialization of block-scoped variables in for-of and for-in loops (#124)

0.14.0

  • Always wrap block-less bodies in curlies (#110, #117, !80)
  • Make sure block-scoped variables in loops have an initializer (#124)
  • Destructuring assignments (!82)
  • Support string literals in object destructuring (!81)
  • Standalone arrow function expression statements (!79)

0.13.2

  • Fix spread operator when used with new and this (#104, #115)

0.13.1

  • Handle destructuring in for/for-of loop heads (#95)
  • Allow early return (without value) from loops (#103, #105)

0.13.0

  • Require an objectAssign option to be specified if using object spread operator (#93)
  • Fix spread operator with expression method calls and template strings (!74)

0.12.5

  • Prevent reserved words being used as identifiers (#86)
  • Use correct this when transpiling super inside arrow function (#89)
  • Handle body-less for-of loops (#80)

0.12.4

  • Allow references to precede declaration (inside function) in block scoping (#87)

0.12.3

  • Argh, npm

0.12.2

  • Files missing in 0.12.1 (???)

0.12.1

  • Don't require space before parens of shorthand computed method (#82)
  • Allow string keys for shorthand methods (#82)

0.12.0

  • Support u flag in regular expression literals (!62)
  • Save buble/register transformations to $HOME/.buble-cache (!63)

0.11.6

  • Allow shorthand methods with computed names (#78)
  • Include code snippet in error.toString() (#79)

0.11.5

  • Preserve whitespace between JSX tags on single line (#65)

0.11.4

  • Allow computed class methods, except accessors (!56)
  • Compound destructuring (!58)

0.11.3

  • Ensure inserted statements follow use strict pragma (#72)

0.11.2

  • Ensure closing parenthesis is in correct place when transpiling inline computed property object expressions (#73)

0.11.1

  • Fix computed property followed by non-computed property in inline expression

0.11.0

  • Computed properties (#67)
  • Allow super(...) to use rest arguments (#69)

0.10.7

  • Allow customisation of Object.assign (used in object spread) (!51)

0.10.6

  • Handle sparse arrays (#62)
  • Handle spread expressions in JSX (#64)

0.10.5

  • Create intermediate directories when transforming via CLI (#63)
  • Update README (#57)

0.10.4

  • Support spread operator in object literals (!45) and JSX elements (!46)

0.10.3

  • Disable intelligent destructuring, temporarily (#53)
  • Fix whitespace in JSX literals (!39)
  • Add : true to value-less JSX attributes (!40)
  • Quote invalid attribute names (!41)

0.10.2

  • Don't add closing quote to JSX component without attributes (#58)

0.10.1

  • Fix handling of literals inside JSX

0.10.0

  • Basic JSX support

0.9.3

  • Better spread operator support, including with arguments (#40)
  • Fix indentation of inserted statements in class constructors (#39)

0.9.2

  • Allow class to have accessors and no constructor (#48)
  • Fix help message in CLI

0.9.1

  • Prevent confusion over Literal node keys

0.9.0

  • More complete and robust destructuring support (#37, #43)
  • Correct this/arguments references inside for-of loop

0.8.5

  • Allow destructured parameter to have default (#43)
  • Allow continue/break statements inside a for-of loop

0.8.4

  • Allow class body to follow ID/superclass without whitespace (#46)

0.8.3

  • Performance enhancements (!23)

0.8.2

  • More robust version of (!22)

0.8.1

  • Fix export default class A extends B (broken in 0.8.0) (!22)

0.8.0

  • Subclasses inherit static methods (#33)
  • Performance enhancements (!21)

0.7.1

  • Prevent omission of closing paren in template string (#42)
  • Separate variable declarations for each name in destructured declaration (#18)

0.7.0

  • Allow arrow functions to be used as default parameter values (#36)

0.6.7

  • Support static get and set in classes (#34)
  • Support spread operator in expression method call (!14)
  • Fix for-of loops with no space after opening paren (#35)

0.6.6

  • Fix another subclass super() bug (#32)

0.6.5

  • Fix super() call in subclass expression (#32)
  • Less defensive template string parenthesising (!9)

0.6.4

  • Add Node 6 to support matrix

0.6.3

  • Handle empty template strings (#28)

0.6.2

  • Handle body-less do-while blocks (#27)

0.6.1

  • Always remember to close parens in template strings

0.6.0

  • Strip unnecessary empty strings from template literals
  • Intelligent destructuring for object patterns in parameters (#17)

0.5.8

  • Fix exponentiation assignment operator edge case

0.5.7

  • Exponentiation operator support (#24)
  • More informative error messages for for-of and tagged template strings

0.5.6

  • Add dangerousTaggedTemplateString (!2) and dangerousForOf (!3) transforms
  • Prevent deindentation causing errors with removed whitespace in class methods
  • Use correct identifier with default destructured function parameters (#23)

0.5.5

  • Ensure return is in correct place when creating bodies for arrow functions (#21)
  • Prevent deindentation of class methods causing breakage with destructuring statements (#22)

0.5.4

  • Install missing chalk dependency
  • Informative error messages when buble/register fails

0.5.3

  • Add register.js to package. Yes I'm an idiot

0.5.2

  • Add buble/register for use with e.g. Mocha

0.5.1

  • Remove unused dependency

0.5.0

  • Support --target, --yes and --no in CLI
  • Compile entire directory of files via CLI
  • Sourcemap support in CLI
  • All transforms can be disabled (or errors suppressed) with the transforms option (or --yes and --no, in the CLI)
  • import and export will throw an error unless --no modules transform is specified
  • Fix bug with destructuring
  • Fix bug with block scoping and loops

0.4.24

  • Throw if let/const is redeclared, or var is redeclared with a let/const (0.4.22 regression)

0.4.23

  • Add buble.VERSION
  • Tidy up build process (don't bundle Acorn incorrectly)

0.4.22

  • Allow double var declarations (only throw if let or const is redeclared)

0.4.21

  • Add find and findIndex helpers for 0.12 support

0.4.20

  • Bump to resolve unknown npm issue

0.4.19

  • Fix block scoping bug with for loops that don't need to be rewritten as functions

0.4.18

  • Fix break-inside-switch bug

0.4.17

  • Support for...in loops and block scoping

0.4.16

  • Add ie and edge to support matrix

0.4.15

  • Rewrite reserved properties if specified (#9)

0.4.14

  • Allow classes to extend expressions (#15)
  • Experimental (partially implemented) API for disabling transforms based on target environment or custom requirements

0.4.13

  • Fix return statement bug

0.4.12

  • More complete and robust transpilation of loops that need to be rewritten as functions to simulate block scoping (#11, #12, #13)

0.4.11

  • Remove source-map-support from CLI (only useful during development)

0.4.10

  • Basic support for spread operator

0.4.9

  • Support getters and setters on subclasses
  • Disallow unsupported features e.g. generators

0.4.8

  • Support getters and setters on classes
  • Allow identifiers to be renamed in block-scoped destructuring (#8)
  • Transpile body-less arrow functions correctly (#9)

0.4.7

  • Add browser version

0.4.6

  • Report locations of parse/compile errors (#4)

0.4.5

  • Sourcemap support

0.4.4

  • Support for class expressions
  • More robust deconflicting
  • Various bugfixes

0.4.3

  • Handle arbitrary whitespace inside template literals

0.4.2

  • Fix bug-inducing typo

0.4.1

  • Rest parameters

0.4.0

  • Self-hosting!

0.3.4

  • Class inheritance

0.3.3

  • Handle quote marks in template literals

0.3.2

  • Handle empty class declarations

0.3.1

  • Add bin to package

0.3.0

  • (Very) basic CLI
  • Handle export default class ...

0.2.2

  • Initialise children of Property nodes
  • Prevent false positives with reference detection

0.2.1

  • Add missing files

0.2.0

  • Support for a bunch more ES2015 features

0.1.0

  • First (experimental) release