Holy cow! It’s been a week!
I’m happy to say tink dev has ramped up significantly since I last wrote about this. I’ll try and summarize everything here and then talk about next steps!
Call for Collaborators
Probably the most noteworthy bit here is that I asked for help with development, and BOY HOWDY did y’all deliver. Literally brings a tear to my eye. Every time I posted something that I could use help with, it would get snatched up within minutes. There’s also still a couple of ancillary subcommands available, if you’re interested in jumping in! Get 'em while they’re hot!
I’ll keep posting new things as I come up with them and I think new folks can jump in and help, so keep an eye out.
So far, y’all have volunteered to add:
- A super snazzy new interactive search UI.
- A license checker.
- A new
- Various other ancillary subcommands that are necessary for a full-featured package manager but individually small commands.
- A full-on webpack build, so that
tinktarballs are as tiny as possible and it’s fast to install and run.
Thanks everyone! I’ll have even more for you very soon!
Proper tink releases
As you may or may not have noticed, I’ve not only been pushing to the git repository, but tink is actually available on the npm registry itself! That means that trying out tink in its current development state is as easy as
$ npx tink --help! I don’t know if I’d say it’s quite -usable- yet, but enough bits of it work that you can totally try it out right now and start getting a feel for it.
Since there’s releases, that also means there’s now a tink CHANGELOG.md that describes all the released changes! I’ll be posting select bits here on a weekly basis, but if you want to keep up and make sure you know all the details, go check that link out.
Most fs operations supported
You heard that right. You can now do most
fs.* operations directly and, if you end up pathing into a
node_modules directory, it’ll potentially switch to the virtual mode, with files getting loaded directly off the cache. This is the fundamental feature of tink and I’m excited it’s working! There’s a few more fs operations missing, and this of course needs tests (something I’ll be reaching out to the community for help with soon), but hey, it does the thing!
Not just webpack support, but it’s the one I tested. Because the above works, it means pretty much any tooling that goes through Node’s
fs operations will work just as usual – this includes Webpack, and probably every other bundler! I tested this with
create-react-app's build scripts, too, and can confirm that I could build a CRA app with tink, and no
This is the most recent change, and exciting in its own right. I’ve stopped having
tink dispatch off
.package-map.json and removed all the relevant patches from the node resolver. That means that the only patches to Node’s module loader are just to add TypeScript and JSX support, and to get certain fs overrides to actually apply. The rest of the behavior is basically identical to before! This will make compatibility even better, and it makes fallbacks super easy.
That’s right: You can now put anything in
node_modules and individual files can be overridden as needed. You can patch individual files inside that directory, and they’ll only override that one file. No need to copy entire packages out of the cache!
Oh, and tink supports
graceful-fs now, too.
One last thing: I’ve started sketching out the various tink subcommands. So you can take a gander right now and get a feel for how using tink will actually feel! Let me know what you think.
So what’s next? Something like this:
- Implement more of the documented subcommands.
- Finish the pkgmap -> pkglock refactor.
- Get lazy dep loading fully working.
- Hack together a proxy server for lazy loading of individual files off a future hypothetical registry API. That’s right, you’ll never download a
README.mdagain unless the user actually tries to read it.
- Start writing tests for current functionality.
Lots of exciting stuff coming this week! Please keep an eye out for things to contribute to if you want to help – I mean, who wouldn’t want to be at the vanguard of our little revolution in package management? There’s nothing quite like tink, and there won’t be, for a while. So let’s kick ass!