Open neongreen opened 9 months ago
Until node supports serialization and deserialization of a format natively, package managers shouldn’t, and it’s a mistake for pnpm to do so - especially if it could end up being published.
That's wild, and I am broadly inclined to agree with @ljharb here—the interop hazards here seem pretty significant to me. Node has a ton of things that it does differently in the presence vs. absence of a package.json
file, and while it is interesting that pnpm supports using JSON5 (I guess for use in contexts where a bundler will be used? Though most bundlers also look at regular package.json
files!) it definitely seems like a hazard to try to support it here.
the interop hazards here seem pretty significant to me
I suppose it heavily depends on the usage patterns. Some people work on dozens / hundreds of libraries and the interop hazard is higher. Some people (like me) never do anything that would end up on npm.
So I'd definitely appreciate being able to opt into VOLTA_FEATURE_JSON5=1
or something along those lines — it's somewhat painful to have a huge messy package.json and not be able to document anything there without significant friction.
(On the broader topic of whether it's a hazard to the ecosystem — unfortunately I have no idea.)
Having some kind of opt-in mode would definitely make it more viable, but even beyond that: I tagged it as an enhancement and am leaving it open because while I see the hazards (as described above) Volta also tries to Just Work™ with the ecosystem as it actually is, so my opinion about what package managers should do may end up being different from what Volta should do!
For the record, there was a feature request on supporting JSON5 on Node, but it was closed a few years ago (the issue is still active, though): https://github.com/nodejs/node/issues/40714
There's also an RFC on allowing comments on JSON through other means than JSON5 on NPM, but it doesn't seem to be getting far either: https://github.com/npm/rfcs/issues/291
pnpm allows using
package.json5
instead ofpackage.json
. The killer feature is that it supports comments.https://docs.rs/json5format/0.2.6/json5format/ could be used to read/write json5 while preserving comments.