#### Meeting from: October 7th, 2020 # Open RFC Meeting (npm) ### Attendees - Darcy Clarke (@darcyclarke) - Isaac Z. Schlueter (@isaacs) - Ruy Adorno (@ruyadorno) - Christian Siebmanns (@christian24) - Jordan Harband (@ljharb) - Wes Todd (@wesleytodd) ### Agenda 1. **Housekeeping** 1. Introduction(s) 1. [Code of Conduct Acknowledgement](https://www.npmjs.com/policies/conduct) 1. Outline Intentions & Desired Outcomes 1. Announcements 1. **PR**: [#239 describe how npm 7 handles peer conflicts](https://github.com/npm/rfcs/pull/239) - @isaacs ### Notes - **PR**: [#239 describe how npm 7 handles peer conflicts](https://github.com/npm/rfcs/pull/239) - @isaacs - @isaacs - overarching want/need is for deps to install properly - users don't want conflicts but do want high quality - easiest way out of resolving conflicts is to just not install peerDeps (not realistic) - @ljharb - upgrade path from 6 to 7 shouldn't break someone - installing/updating a dep in a strict 7 dep graph should block/break when there's conflict - not sure how to reconcile strict vs. noisey - @isaacs - we could output a warning/notice to tell consumer to run w/ -f or fix their conflicts - @ljharb - potentially introduce a config value for suppressing warnings - @christian24 - wants a config value to set the type of resolution in `.npmrc` - @isaacs - we have that today w/ `strict-peer-deps = true` or `npm config set strict-peer-deps` - @christian24 - a lot of builds are happening in CI so a lot of notifications are silenced - @isaacs - developer do eventually see these on their local machines - @ruyadorno - what happens when you competiting versions of a dep, does the higher in the tree win? - @isaacs - example: - x@1 - y@2 - PEER(w@1) - z@1 - PEER(w@2) - should always take the version of dependency that was defined by the user over a peer dep - previously, we would not have installed `w` at all which would have probably broke your app before - @ruyadorno - can we just place the deep dep into the top level dep to allow users to understand/update easier - @isaacs - would this not introduce conflicts with your primary deps which would crash - you can't really fix this peer dep since its transitive - less concerned about conflicts that are many levels deep - warnings should be stored & only output at the end of install (question via @christian24) - @ljharb - `install` with no arguments would install correctly - `install x` would fail as you're trying to modify/add the dep - wants to ensure once your graph is valid, you can't make it invalid - @isaacs - note: npm@7 does introduce a hidden "lockfile" similar to pnpm & yarn - change to this RFC to make is meta dependency we will grab the first thing we find - can we infer stictness when adding new deps? - should create a separate RFC for peer deep strictness modes & how conflicts resolve in specific situations (ie. `install` vs. `install x`) - update RFC & ratify - fix Arborist bug to align with the RFC - open a new RFC for changing the default strictness mode in `npm@8`