#### Meeting from: February 17th, 2021
# Open RFC Meeting (npm)
### Attendees
- Darcy Clarke (@darcyclarke)
- Gar (@wraithgar)
- Isaac Z. Schlueter (@isaacs)
- Nathan LaFreniere (@nlf)
- Ruy Adorno (@ruyadorno)
- Jordan Harband (@ljharb)
- Victor Vlasenko (@larixer)
### 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. **Issue**: [#325 [RRFC] Run preinstall / postinstall scripts on single package installation](https://github.com/npm/rfcs/issues/325) - @karlhorky
1. **Issue**: [#324 [RRFC] Prefer peerDependencies over regular dependencies, when both specified together](https://github.com/npm/rfcs/issues/324) - @larixer
1. **Issue**: [#323 [RRFC] Improve experience and security around npx and scoped packages](https://github.com/npm/rfcs/issues/323) - @dominykas
1. **Issue**: [#327 Drop support for installing other-platform optionalDependencies with --force](https://github.com/npm/rfcs/issues/327) - @isaacs
1. **PR**: [#321 feat(no-tag-publish): add proposal for a no-tag publish](https://github.com/npm/rfcs/pull/321) - @wraithgar
1. **PR**: [#319 feat(multiple-dist-tags): add proposal for multiple dist-tags](https://github.com/npm/rfcs/pull/319) - @wraithgar
1. **PR**: [#317 Publish set the tag accordingly to the semver version number](https://github.com/npm/rfcs/pull/317) - @Divlo
1. **PR**: [#314 RFC: `registry:` dependency specifiers](https://github.com/npm/rfcs/pull/314) - @isaacs
1. **Issue**: [#313 [RRFC] Add method for getting help on config option](https://github.com/npm/rfcs/issues/313) - @Yash-Singh1
1. **Issue**: [#2610 [BUG] NPM v7 uses SSH instead of an explicit HTTPS for GitHub repos](https://github.com/npm/cli/issues/2610) - @uhop
1. **PR**: [#117 RFC: npm workspaces - Working with workspaces](https://github.com/npm/rfcs/pull/117) - @ruyadorno
### Notes
#### **Issue**: [#325 [RRFC] Run preinstall / postinstall scripts on single package installation](https://github.com/npm/rfcs/issues/325) - @karlhorky
* @ljharb seems like there's confusion between installing me as a package & running a script when I install something else
* @isaacs maybe @wraithgar can help here, has been doing work to clean up the documentation around lifecycle scripts
* @darcyclarke could use hook-scripts potentially to solve for this
* @isaacs would not use hook-scripts as a good API/tool for this
* @ruyadorno we need this in the `npm` CLI
* @wraithgar will keep this in mind with the work being done to document lifecycle scripts
#### **Issue**: [#324 [RRFC] Prefer peerDependencies over regular dependencies, when both specified together](https://github.com/npm/rfcs/issues/324) - @larixer
* @larixer describes the example of working with a framework (such as next.js) that depends on a package (such as webpack) which also uses a plugin ecosystem (such as webpack loaders) that declares the intermediate (webpack) package as a peer dependency while the top-level app also declares the intermediate package (webpack) as a dependency.
* @ljharb usually having a flexible peer dependency semver range helps out resolving the dependency tree and avoid duplication
* @isaacs v7 will try to pick a version of the same peerDependencies if the ranges can be eaisly resolved - conflicting ranges will cause an ERESOLVE error
* @isaacs it's possible now to have a pkg be in both devDependencies AND dependencies with different declared semver ranges and PROD will always be picked up over dev on `npm install`
* @isaacs added the fix for preferring peer over prod
* @isaacs ACTION: create a bug against Arborist for this
* @isaacs/victor ACTION: update package.json docs with the logic for preferences when resolving
#### **Issue**: [#323 [RRFC] Improve experience and security around npx and scoped packages](https://github.com/npm/rfcs/issues/323) - @dominykas
* @isaacs `npx` looks into the local `node_modules/.bin` directory first
* @dominykas _describes the [many scenarios](https://github.com/npm/rfcs/issues/323) from the RRFC examples_
* @isaacs since npm6 the cli will avoid clobbering bin in the global space but it still allowes that in local node_modules since changing that would be too disruptive to the ecosystem
* @isaacs looks like we can follow up tracking many these issues offline/async after the call
#### **Issue**: [#327 Drop support for installing other-platform optionalDependencies with --force](https://github.com/npm/rfcs/issues/327) - @isaacs
* @isaacs conceptually the `--force` option in the cli will often opt-into the "less safe" resolution for a given problem
#### **PR**: [#321 feat(no-tag-publish): add proposal for a no-tag publish](https://github.com/npm/rfcs/pull/321) - @wraithgar
* @wraithgar currently there's no way to publish/upload to registry without a tag, adding it could mean possibly breakages for folks relying on the current behavior, in which publishing with `--no-tag` would end up publishing to the registry to a `"false"` tag.
* @wraithgar another point is that currently the public registry does not support publishing without a tag and will return a `400` error, on the other hand other registry implementations (such as GitHub packages) will work as intended.
* @isaacs currently the `--tag` option is only a string, so using that as a boolean (such as `--no-tag`) will coerce its value to a string.
* @isaacs maybe the `tag` option for install and a different option name for publish - essentially they should be two different option names.
#### **PR**: [#319 feat(multiple-dist-tags): add proposal for multiple dist-tags](https://github.com/npm/rfcs/pull/319) - @wraithgar
* @wraithgar commas are actually valid characters in tag names, so we can not use a comma-separated value to declare those