volta icon indicating copy to clipboard operation
volta copied to clipboard

Support package.json5

Open neongreen opened this issue 1 year ago • 5 comments

pnpm allows using package.json5 instead of package.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.

neongreen avatar Jan 02 '24 20:01 neongreen

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.

ljharb avatar Jan 02 '24 22:01 ljharb

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.

chriskrycho avatar Jan 02 '24 23:01 chriskrycho

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.)

neongreen avatar Jan 03 '24 01:01 neongreen

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!

chriskrycho avatar Jan 03 '24 03:01 chriskrycho

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

hockdudu avatar May 28 '24 08:05 hockdudu