Support for rest and spread properties in acorn 5


005.0.14 years ago4 years agoMinified + gzip package size for @browserify/acorn5-object-spread in KB


Spread and rest properties support in acorn 5

NPM version

This is plugin for Acorn - a tiny, fast JavaScript parser, written completely in JavaScript.

Fork of https://github.com/adrianheine/acorn5-object-spread to support old versions of node until acorn adopts rest-spread

It implements support for spread and rest properties as defined in the stage 3 proposal Object Rest/Spread Properties for ECMAScript.


You can use this module directly in order to get an Acorn instance with the plugin installed:

var acorn = require('@browserify/acorn5-object-spread-es3');

Or you can use inject.js for injecting the plugin into your own version of Acorn like this:

var acorn = require('@browserify/acorn5-object-spread/inject')(require('./custom-acorn'));

Then, use the plugins option whenever you need to support object spread or rest while parsing:

var ast = acorn.parse(code, {
  plugins: { objectSpread: true }

Differences to acorn-object-rest-spread

acorn-object-rest-spread is another acorn plugin implementing the same spec. There are some differences, though:

  • acorn-object-rest-spread overwrites acorn's parseObj with a modified copy from acorn 4, so that an acorn instance with that plugin cannot for example parse ({async, foo}) and wrongly complains about duplicate property names in patterns.
  • acorn-object-rest-spread emits SpreadElements with a non-standard value property
  • acorn-object-rest-spread emits SpreadElements in arrow function argument patterns and nested object patterns were it should emit RestElements
  • acorn-object-rest-spread doesn't check for invalid trailing commas in rest properties


This plugin is issued under the MIT license.

With <3 by UXtemple.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.