volta-cli / volta

Volta: JS Toolchains as Code. ⚡
https://volta.sh
Other
10.97k stars 230 forks source link

Support package.json5 #1633

Open neongreen opened 9 months ago

neongreen commented 9 months ago

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.

ljharb commented 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.

chriskrycho commented 9 months ago

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.

neongreen commented 9 months ago

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

chriskrycho commented 9 months ago

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!

hockdudu commented 4 months ago

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