• azertyfun@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    arrow-down
    1
    ·
    5 months ago

    It’s saner, not perfect. With virtualenvs it does basically what you describe except that it re-downloads everything for every virtualenv, but that does not typically matter much since it’s not downloading a billion dependencies.

    With NPM there’s no choice but to have hundreds of duplicates installed for every project, that’s not just inefficient but it is a security, maintainability, and auditability nightmare.

    • FlorianSimon@sh.itjust.works
      link
      fedilink
      arrow-up
      5
      ·
      edit-2
      5 months ago

      NPM is definitely saner for that use case because it works out of the box. Pip is not because it is based on shakier foundations. With NPM, you don’t get to a point where you rely on things to work correctly, and they suddenly don’t and you have trouble understanding why. And it does not force me to look at its nuts and bolts to allow me to work with it.

      I can afford big node_modules directories, even if it’s not optimal. It’s still small compared to the cruft I’ve accumulated on other projects I’ve worked on with other technologies. Remember the order of priority of things: make it work >> make it efficient. Software engineering is about delivering software, it’s not an art. It doesn’t have to be pretty everywhere.

      I will concede that NPM is not perfect. Despite its flaws, I love how Conan solves the issue we’re talking about.