yall
yall copied to clipboard
Yarn/npm for monorepos
Yall
Yarn workflow for monorepos (projects with multiple apps/packages within).
Why
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.
What
Yallis likeyarn/npmfor multiple folders withpackage.json/yarn.lock.- It looks up for folders with
package.json/yarn.lockin the project tree and runs there given command (by default in sequence, but may also concurrenlty). - Can help to handle
yarncommands 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
--forceinstallcations).
Install
npm i @whitecolor/yall -g
Work in progress. It is a pre-release.
Usage
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, iffoldersspecified will run in those folders, but without nestedin- shortcut for--include-folders [folder]plus--herelink-files- create symlinks forfile:dependencies (will not touchyalcdependencies)npm- runnpmcommand, alternativly toyarnclean-up- will clean-up/removenode_modulesbefore command runlock- will create.yall.lockfile (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.jsonin case ofnpmor 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
Licence
WTF.