PaulRBerg / foundry-template

Foundry-based template for developing Solidity smart contracts
MIT License
561 stars 110 forks source link

Move away from PNPM #36

Closed PaulRBerg closed 10 months ago

PaulRBerg commented 10 months ago

PNPM's symbolic links are problematic. I should move away from PNPM. Possible solutions:

  1. Go back to Yarn
  2. NPM
  3. Explore Bun

Refs:

akshatmittal commented 10 months ago

I have to ask @PaulRBerg, why choose Bun over Yarn?

Perspective: Yarn ecosystem is ubiquitous, supports configurable soft links, hard links, global cache and per-project configs for several things necessary in the Solidity ecosystem. Meanwhile, Bun is (currently) only supported on Linux, is unstable, fairly buggy and for a project like this (and nearly anything in the solidity ecosystem) the benefit of installing dependencies 1s faster are outweighed by the ecosystem alone.

(To be clear, I really like this template, I switched from my own to this a while ago but I always replace <_whatever package manager_> with Yarn)

PaulRBerg commented 10 months ago

I have to ask @PaulRBerg, why choose Bun over Yarn?

  1. Bun is faster
  2. Bun is more lightweight; I've used Yarn V3 for 2+ years, and gotten tired of having to keep the .yarn directory in version control and the complicated entries in .gitignore

Tip: feel free to open discussions for questions like this (which are great!)

Bun is (currently) only supported on Linux

Not true. I use it on macOS

is unstable, fairly buggy and for a project like this (and nearly anything in the solidity ecosystem) the benefit of installing dependencies 1s faster are outweighed by the ecosystem alone.

It wasn't unstable for me. But I hear you on the other points - I will monitor how Bun works and reconsider Yarn.

I really like this template

Thanks

I switched from my own to this a while ago but I always replace with Yarn)

Then, the template works! It's meant to be edited like that.

akshatmittal commented 10 months ago

Thanks for the comments, @PaulRBerg!

  1. Bun is faster

Does it really matter here? The half a second to a second saved isn't going to be impactful right?

  1. Bun is more lightweight;

I do agree with you, it is. Although I'm not quite following the problem with .yarn and one entry in .gitignore. As of right now, (using v4.0.2) .yarn is optional if you want everyone to be on the same version of yarn - which imo is useful, and the only entry I have in .gitignore is the install-state.gz file, which is also optional.

Not true. I use it on macOS

Haha, true, you're not wrong. I should really have mentioned *nix here.

Appreciate the openness here, I will open a discussion to talk about Bun vs Yarn! The only reason I'm even talking about this is because having a single package manager that just works for everyone on the team (using Linux, macOS and Windows), without having to worry about versions, without having to think about the idiosyncrasies or unexpected behaviours is a good experience.

PaulRBerg commented 10 months ago

The half a second to a second saved isn't going to be impactful right?

Fair enough

As of right now, (using v4.0.2) .yarn is optional if you want everyone to be on the same version of yarn - which imo is useful, and the only entry I have in .gitignore is the install-state.gz file, which is also optional.

Oh, that is interesting! I did not know that.

I will open a discussion to talk about Bun vs Yarn!

Please do!