# Workspaces Deep Dive ### Attendees - Darcy Clarke (@darcyclarke) - Ruy Adorno (@ruyadorno) - Christian Siebmanns (@christian24) - Nathan LaFreniere (@nlf) - Isaac Z. Schlueter (isaacs) - Bradley Farias (@bmeck) - Jordan Harband (@ljharb) #### Notes - @ljharb run arbitary commands - @darcyclarke does `npm exec` work - @christian24 `git submodule foreach ...` #### Actions - [ ] add `exec` to the subcommand list - [ ] update to reference top-level `ws/workspaces` command over `-w/--workspace` #### Examples / Usecases ``` # making it a top level 'ws' command $ npm ws exec -- cat package.json $ npm ws exec -w foo -- cat package.json $ npm ws exec --all -- cat package.json # making it a flag '-w' or '-ws' $ npm exec -w foo -w bar -w baz $ npm exec -ws # spec'ing a "foreach" ... $ npm workspace foreach npm test $ npm workspace foreach cat package.json # learna's implementation... $ learna exec cat package.json ``` - `ws|workspaces` top-level command avoids the hazard of users trying to run a command that is just not supported and we can just throw an error in these cases - Syntax for running a subcommand across all workspaces becomes more aligned with other commands we have, e.g: `--all` - open question: do we run ws commands in parallel? (Interleaving output, stdin stuff, etc. Maybe good to opt-in though, for cases where it does make sense?)