#### Meeting from: March 3rd, 2021
# Open RFC Meeting (npm)
### Attendees
- Darcy Clarke (@darcyclarke)
- Nathan LaFreniere (@nlf)
- Gar (@wraithgar)
- Isaac Z. Schlueter (@isaacs)
- Jordan Harband (@ljharb)
- Ruy Adorno (@ruyadorno)
- Wes Todd (@wesleytodd)
- Pelle Wessman (@voxpelli)
- Orta Therox (@orta)
### 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**: [#332 RFC: Support Yarn style command/script/bin lookups from the CLI with npm prefix](https://github.com/npm/rfcs/pull/332) - @orta
1. **PR**: [#117 RFC: npm workspaces - Working with workspaces](https://github.com/npm/rfcs/pull/117) - @ruyadorno
1. **Issue**: [#325 [RRFC] Run preinstall / postinstall scripts on single package installation](https://github.com/npm/rfcs/issues/325) - @karlhorky
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**: [#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. **Discussion**: [#316 Opting out of backwards compatibility of package-lock.json](https://github.com/npm/rfcs/discussions/316) - @valtlai
1. **Discussion**: [#334 Highlight action items in ERESOLVE error msg?](https://github.com/npm/rfcs/discussions/334) - @ruyadorno
### Notes
#### **PR**: [#332 RFC: Support Yarn style command/script/bin lookups from the CLI with npm prefix](https://github.com/npm/rfcs/pull/332) - @orta
* @ljharb if `npm` implemented this, every new command would be a breaking change (semver:major)
* @orta my workflow uses these commands ~40% of the time
* @orta yarn has always had this behavrior so the concern is lessend in their case
* @wraithgar the ambiguity here scares me
* @wesleytodd
* @lharb improvements to `npm run-script` that allow it to except/fallback locally installed
* @isaacs this is semver major if we make changes around to `run-script`
* @darcyclarke we can ship under a flag
* @wraigthgar seems like we're still conflating
* @darcyclarke we should write the `npr` binary RFC
* @isaacs imo, `npx` was a mistake - should have introduced `npm exec` first
* @isaacs `npx` behaivour today is confusing
* @voxpelli imagine `run test` & a module has defined a binary, this fallback could lead to unintended consequences
* @wesleytodd seems like there's an RCE vector here
* @orta `yarn` solved this a bit w/ **strict mode**
Summary:
There are ~4 execution contexts: "scripts", local .bin deps, global deps and "download to tmp to run" - the coverage between them all in commands is spotty
- `npm exec`: does local script, global dep and external dep
- `npm r`: could that just focus on local exec-y things? e.g. scripts then local deps then fail
- `npm exec-local` (new): like `npm exec`, but only for node_module/.bin executables
#### **PR**: [#117 RFC: npm workspaces - Working with workspaces](https://github.com/npm/rfcs/pull/117) - @ruyadorno
* @ruyadorno
* Going back a bit about to the more transparent implementation
* ex. `npm install` is *workspace-aware* without being nested (ie. `npm ws install`)
* the categorization of each of the commands helped us see how to navigate this work better
* core idea is... `workspaces=false` is the default for all commands that aren't currently *workspace-aware* (ie. the `install`-suite of commands)
* **Action:** need to finalize command examples
* @isaacs
* some work to be done to do filtered installs (ie.)
* `exec` & `run-script` are the other interesting/challenging commands (more thought required)
* @wesleytodd assumption of `npm run` only executing once vs. several times should be accomodated
* @isaacs we should make our docs really clear about this
* @darcyclarke nice labels in our docs can help (ie. quick/visible indicator of the command's level of workspace support)
* @ruyadorno it would be a breaking change to `npm ls` if we made it *workspace-aware* without a flag
* @isaacs workspaces are sort of looked at as experiemental already
* @wesleytodd although you may look at it that way, user's may not be considering
#### **Issue**: [#325 [RRFC] Run preinstall / postinstall scripts on single package installation](https://github.com/npm/rfcs/issues/325) - @karlhorky
* @isaacs we need a "install tree has been mutated" lifecycle script, that would solve this without conflatig what preinstall/postinstall are used for.
* @darcyclarke let's backlog writing an actual RFC for that
* @wesleytodd would like to be able to do this programmatically with `arborist`
#### **PR**: [#321 feat(no-tag-publish): add proposal for a no-tag publish](https://github.com/npm/rfcs/pull/321) - @wraithgar
* ...