Yarn workflow for monorepos (projects with multiple apps/packages within).
Because I didn't check yet how well workspaces
can work out (I see some issues with them). And there is need in good tool that would support container based dev workflow, including watching and running efficient installations in multiple nested locations.
Yall
is likeyarn/npm
for multiple folders withpackage.json
/yarn.lock
.- It looks up for folders with
package.json/yarn.lock
in the project tree and runs there given command (by default in sequence, but may also concurrenlty). - Can help to handle
yarn
commands running concurrently. - It can watch manifest/lock files and run commands automatically on change, this is useful in container based scenarios.
- It can "keep state" and run installations only when lock files change (useful when you use
--force
installcations).
npm i @whitecolor/yall -g
Work in progress. It is a pre-release.
yall [yarn|npm command] [yarn|npm flags] [yall flags]
Additional yall's
option flags:
concurrency
(con
) - max count of tasks to run in parallel, by default disabled (value is 1)fail-fast
- interupt process as soon as when the first error occures (by default process is not interupted if error happend in one of the folders, but when all tasks finished it exits with error code)folders
- folders where to run (including nested), relative to cwd, wilcard not supportedforce-local
- re-adds local (file:
orlink:
) dependencies.force-local
- re-adds remote (github:
,git+ssh:
, etc ) dependencies.dot-folders
- include (hidden) folders starting with dotexclude-folders
- folders where not to run (including nested)include-folders
- additional folders to include (for example: explit dot folders).here
- will run only in current folder, iffolders
specified will run in those folders, but without nestedin
- shortcut for--include-folders [folder]
plus--here
link-files
- create symlinks forfile:
dependencies (will not touchyalc
dependencies)npm
- runnpm
command, alternativly toyarn
clean-up
- will clean-up/removenode_modules
before command runlock
- will create.yall.lock
file (or file with specified name) while running commands and remove it after everything is done.watch
- watch mode, will watch for changes ofyarn.lock
(package.json
in case ofnpm
or custom list of files specified) and run command in folder where file changed, it periodically rescans folders for new fileswatch-content
- will check file content for change, not just all change events.separate-cache-folder
(sep-cache
) - will use separate cache folder for each installation (nested folder), this is string value, that will be used as a seed to get immutable unique path of cache folder (yarn-cache-folder/uniqu-hash
).debug
- some additional debug output
WTF.