#### Meeting from: August 18th, 2021 # Open RFC Meeting (npm) ### Attendees - Darcy Clarke (@darcyclarke) - Isaac Z. Schlueter (@isaacs) - Gar (@wraithgar) - Nathan Fritz (@fritzy) - Tierney Cyren (@bnb) - Luke Karrys (@lukekarrys) - Alasdair Hurst (@alasdairhurst) ### Previously... - [2021-08-11](https://github.com/npm/rfcs/blob/latest/meetings/2021-08-11.md) ### 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**: [#434 Support package-lock.json v3 in npm 7](https://github.com/npm/rfcs/pull/434) - @remcohaszing 1. **Issue**: [#427 [RRFC] npmrc file improvements.](https://github.com/npm/rfcs/issues/427) - @EvanCarroll 1. **Issue**: [#423 [RRFC] format `package.json` based on config values](https://github.com/npm/rfcs/issues/423) - @lukekarrys 1. **Issue**: [#371 feat(workspaces): introduce new workspaces root selector](https://github.com/npm/statusboard/issues/371) - @darcyclarke 1. **PR**: [#397 RFC: Peer dependencies should be able to match a full range of prerelease versions](https://github.com/npm/rfcs/pull/397) - @alasdairhurst 1. **Audit Improvements:** 1. **PR**: [#422 RFC: audit assertions](https://github.com/npm/rfcs/pull/422) - @bnb 1. **PR**: [#182 RFC: npm audit licenses](https://github.com/npm/rfcs/pull/182) - @bnb 1. **PR**: [#18 npm audit and audit-resolve.json](https://github.com/npm/rfcs/pull/18) - @naugtu ### Notes #### **PR**: [#434 Support package-lock.json v3 in npm 7](https://github.com/npm/rfcs/pull/434) - @remcohaszing - @isaacs - should be based on the `engines` or a config value & not both - lockfile version field is a possibility - @ljharb - don't understand the need for explicit definition - `npm` infers the right hashing - @isaacs - inferrance has been problematic for us historically - being explicit may be nice - @wraithgar - ~we don't ever want to guess user intent as we're usually wrong - we should guess the user intent here - @ljharb - if someone uses `engines.npm` this should already provide the context for the lockfile desirable - **Actions:** - [ ] Have someone from `npm` team do a review & move forward with accepting this - [ ] @isaacs will provide context on where the work can be done for support #### **Issue**: [#427 [RRFC] npmrc file improvements.](https://github.com/npm/rfcs/issues/427) - @EvanCarroll - @isaacs - managing configs in `npm` today isn't ideal - changes to config should include larger breaking changes that will address the root-causes of unmaintainable configs - **Actions:** - [x] take off agenda - [ ] @isaacs will provide feedback & potentially close #### **Issue**: [#423 [RRFC] format `package.json` based on config values](https://github.com/npm/rfcs/issues/423) - @lukekarrys - @lukekarrys - concept is to introduce flags that help with standardization/formating of `package.json` for consistancy - hoping to land this in a minor release, not requiring breaking changes - - @isaacs - we should always respect the existing formatting, unless... - there is an explicit command to reformat & save that file back - should respect `.editorconfig` - @ljharb - likes the options provided here - seems similar to discssuon on inference - @wraigthgar - `.editorconfig` is pretty explicit - @ljharb - would like to explicit set in `.npmrc` his tab preference - would correct a number of legacy project's `package.json` - an `npm install`, that updates `packagae.json` should respect these config values - can we get a `--dry-run` option added? - @fritzy - `npm pkg format` should be able to get pipped - **Actions:** - [ ] @lukekarrys to add a `--dry-run` config optional to `npm pkg format` - this should show a diff & exit non-zero if it made changes - [ ] @lukekarrys to add a `--validate` config optional to `npm pkg format` - [ ] @lukekarrys to turn this into a backlogged Epic ticket for our team #### **Issue**: [#371 feat(workspaces): introduce new workspaces root selector](https://github.com/npm/statusboard/issues/371) - @darcyclarke - @darcyclarke this is an in-flight work item for our team - @wraithgar - there is a quirk about how we currently handle/include workspaces today - we want the ability to include/exclude the "root" of your project - doing work to have these understood by Arborist - there is an open PR to add this to the CLI (ref. https://github.com/npm/cli/pull/3587) - @isaacs - we considered `--workspace=.` which would have removed the need for a trinary - this wasn't ideal & created a net-new convention about workspace definitions - @ljharb - this seems like its because `npm` hoists workspaces dependencies - lerna introduced `.` & that works but that may/may not be the best (based on feedback from the maintainer) #### **PR**: [#397 RFC: Peer dependencies should be able to match a full range of prerelease versions](https://github.com/npm/rfcs/pull/397) - @alasdairhurst - @alasdairhurst - added usecases & personas based on the last meeting - including: - pre-release versions specified as peer-dependencies & - the pre-release version was defined elsewhere in the tree (fails today) - want to accomodate for user intent (based on previous discussions) - introducing some kind of `peerDependencyMeta` to allow for this - @isaacs - very much want to avoid "semver is different depending on dep type" - suggestion: add `--include-prereleases` flag, which would make all semver.satisfies() invocations use `{includePrereleases:true}` - this would allow you to install the peerDep as a prerelease, and anything peer depending on it will be satisfied by that - once saved to lockfile and package.json, would continue to use prerelease version explicitly opted into #### Audit Improvements (Updates): - **PR**: [#422 RFC: audit assertions](https://github.com/npm/rfcs/pull/422) - @bnb - **PR**: [#182 RFC: npm audit licenses](https://github.com/npm/rfcs/pull/182) - @bnb - **PR**: [#18 npm audit and audit-resolve.json](https://github.com/npm/rfcs/pull/18) - @naugtu #### Workspace Terminology (Discussion): - **Actions:** - [ ] @darcyclarke to review previous discussions & action items (there are items associated with further defining/documenting glossary/definitions around `npm`'s Workspaces implemendation)