Skip to content

Conversation

@demurgos
Copy link
Contributor

@demurgos demurgos commented Oct 9, 2018

Why

  • Align with Node's support policy by targeting oldest LTS.
  • Use promise-based APIs out-of-the box (without having to use bluebird)
  • Remove workarounds for old Node versions
  • Refactor the internals to use ES syntax (scoped variables, spread args, arrow functions, etc.)

Supporting unmaintained Node versions is proving to be an increasing burden as third party libraries drop support for it (e.g. tap). Using ES5 syntax while ES2015 brought a lot of improvements to the language is also a weight on maintenance. Finally, this is a pretty mild breaking change: there is no intent to break API compat. Since it implies a semver major update, it will be opt-in and only affect users explicitly updating their projects. The primary motivations for this PR is improving coverage tools using V8, a feature only present on modern Node versions anyway.

What

  • Update CI to run against the currently supported Node versions: Node 6, 8 and 10.
  • Add engines.node field to package.json to warn users trying to use the library on an unmaintained Node version.

/cc @bcoe @profnandaa

@demurgos
Copy link
Contributor Author

Ping @bcoe

@martinheidegger
Copy link

ping @bcoe @isaacs

@bcoe
Copy link
Member

bcoe commented Feb 20, 2019

@martinheidegger unfortunately this is already a bit dated, I think we should update the pull request to 6, 8, 10, and 12 perhaps?; with the intention of dropping 6 quite soon.

@demurgos demurgos changed the title feat: require Node 6 feat: require Node 8 May 7, 2019
@demurgos
Copy link
Contributor Author

demurgos commented May 7, 2019

With Node dropping support for Node 6, I updated my PR to use Node 8, 10 and 12.

## Why

- Align with Node's support policy by targeting oldest LTS.
- Use promise-based APIs out-of-the box (without having to use bluebird)
- Remove workarounds for old Node versions
- Refactor the internals to use ES syntax (scoped variables, spread args, arrow functions, etc.)

Supporting unmaintained Node versions is proving to be an increasing burden as third party libraries drop support for it (e.g. `tap`). Using ES5 syntax while ES2015 brought a lot of improvements to the language is also a weight on maintenance. Finally, this is a pretty mild breaking change: there is no intent to break API compat. Since it implies a semver major update, it will be opt-in and only affect users explicitly updating their projects. The primary motivations for this PR is improving coverage tools using V8, a feature only present on modern Node versions anyway.

## What

- Update CI to run against the currently supported Node versions: Node 8, 10 and 12.
- Add `engines.node` field to `package.json` to warn users trying to use the library on an unmaintained Node version.
@demurgos
Copy link
Contributor Author

demurgos commented May 9, 2019

Travis and Appveyor have some issues since I update to require Node 8 instead of Node 6. I'll try sending a new PR.

@demurgos demurgos mentioned this pull request May 9, 2019
@demurgos
Copy link
Contributor Author

demurgos commented May 9, 2019

Closing in favor of #80

@demurgos demurgos closed this May 9, 2019
@demurgos demurgos deleted the require-node6 branch May 9, 2019 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants