ansi-styles: [fixed] 2.1.0 exports broken in 2.2.0

Via comments on https://github.com/chalk/ansi-styles/commit/74502955deaf0eb977507757e33c52cad5a9aefa#commitcomment-16867578

import ansi from 'ansi-styles';

console.log(`${ansi.colors.red.open}hello world${ansi.colors.red.close}`)

No longer works, with the result of

undefined is not an object (evaluating _ansiStyles2.default.colors.red)


Steps to reproduce:

  1. Install 2.1.0 npm install ansi-styles@2.1.0
  2. Use the code above
  3. Update to 2.2.0 npm install ansi-styles@2.2.0
  4. Re-run the same code, experience error

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 18 (10 by maintainers)

Commits related to this issue

Most upvoted comments

Version 2.2.0 has been unpublished. We’ll do a major bump sometime tomorrow.

Thanks for bringing this to our attention @ajwhite 👍

Post Mortem

2.2.0 was actually released on Feb 21. Some breaking changes that were finally merged (ref #13) were sitting in master until we wanted to do a major version bump. However these changes were inadvertently released in 2.2.0 when the next release should have been 3.0.0 (minor bump instead of a major bump).

Since chalk wasn’t affected by the otherwise breaking changes (this was by-design), but other projects that use ansi-styles might have been, the breaking release 2.2.0 went unnoticed until now.

This is also due to the fact the ‘breaking’ changes were not buggy code, but intentional changes meant for a major version bump, hence why tests still passed on Travis and thus why we were not notified of any breaking CI runs.

As Sindre mentioned, we went ahead and still did a 2.2.1 patch release despite the unpublishing of 2.2.0, for those users that had already bumped their package.json dependencies to ^2.2.0.

We acknowledge that the unpublishing of the broken version was unnecessary and a patch release would have been the preferable solution.

The root issue has been addressed internally (unrelated: externally, too) and won’t be happening again in the future.


Maintainers that are facing errors related to ansi-styles after fixing broken code from the 2.2.0 release (i.e. users that upgraded to 2.2.0 and modified their code to use the new API) can do one of two things:

  • wait for the 3.0.0 release (your code should work when this happens)
  • temporarily change your dependency to "dependencies": {"ansi-styles": "chalk/ansi-styles"}

All other users experiencing errors related to ansi-styles should clear out their node_modules/ directory and re-run npm install - the problem should resolve itself.

We also recommend updating your dependencies to specify ansi-styles@^2.2.1, though this shouldn’t be required.


If you use shrinkwrap, refer to #17.


For any other issues, you are definitely welcome to open a new ticket and I will personally see to it that it’s handled in a timely manner.

Sorry again to anyone affected by this!

So you are aware, unpublishing breaks builds that have used shrinkwrap to pin to 2.2.0.

PLEASE don’t unpublish! This causes disasters downstream. NO, NO!

unpublishing breaks a lot of things, though it was necessary in this case I believe

Why was it necessary? Why not publish the version you intended at 2.2.1, and let everybody move forward? If they’re referencing a broken 2.2.0 then they can update. I’m not trying to be a PITA about it, just curious where the necessity of unpublishing comes in as opposed to just publishing 2.2.1.

the dancer emoticon should be bigger so we can see her fabulous red dress

@laurelnaiad you’re correct. Sindre and I discussed it more after the fact and we agree that a patch would have been better. A lesson for the future 👍

… and remember to do the same with jspm if you’re using it, where this was hitting our project

jspm cache-clear