As time went on, more and more people would open issues, and even a few PRs. Because I wasn't focusing on the library—I had started building my company, Firstbloom, at the time—those issues and PRs were mostly ignored.
Every time I'd open Github, I'd be reminded of the library's existence. "I should really make the time to answer these issues and refactor the library" I'd tell myself. Then I'd get busy with other things and forget about it.
Fast-forward to September 2023. I started feeling a renewed energy towards programming and I felt it was time to capture that and turn
export-to-csv into something more maintainable with stronger boundaries around what it will and won't do as a library.
This started by fixing a few issues (retaining header order, removing unused/unnecessary code and updating dependencies), and releasing
v0.2.2 (diff here).
With those fixes in-place for people with
^0.2.1 in their
package.json files, I set about doing the major refactor and releasing
v1.0.0. The gist of it is I went from a class-based architecture to something a lot more functional in style. Being inspired heavily by how we work at Unsplash, but without bringing in external libraries for ultimate type-safety. One of the core tenants of
export-to-csv being that it's a library with zero dependencies itself. In the spirit of keeping things light and small, I want to keep it that way. If you're curious about the shift from class based to functional, you can look at the pull request for more details.
With the library in a much more maintainable state, I wanted to keep going down the path of making it fun to keep alive.
tsc), a test runner (replacing
jest) and having faster script execution—not that this library really needs it.
I was curious how the switch from
jest was going to go. Honestly, I was pretty impressed at how seamless things were. A total of 13 files changed and 5 commits to get everything up and running using Bun (pull request here). This small change-set may not be applicable to all situations, but I'd highly recommend giving Bun a try. Especially if you've got a smaller library and are using
rollup and want to drop some dependencies.