yarn-workspace-commands v1.0.11
yarn-workspace-commands
Local Automator for yarn workspaces. Yarn-Workspace-Commands lets you to run a set of commands for local dev/ci build on all workspace packages folder.
Basic Usage
Install package on workspace root
yarn add yarn-workspace-commands -D -W
Define commands ywc.config.json
{
"[command_key]": {
/* Array of commands to execute */
"commands": "string[]",
/* Execute in parallel mode. Default : false */
"parallel": "boolean",
/* Execute only on root folder. Default : false */
"rootCommand": "boolean"
}
}
Execute
# command_key defined in ywc.config.json
yarn ywc <command_key>
Detailed Setup Instructions
1. Setup Yarn Workspace
For further info on setting up yarn workspace : Setting Up Yarn Workspace
{
"private": true,
"workspaces": ["packages/*", "app/*"]
}
or
{
"private": true,
"workspaces": {
"packages": ["packages/*", "app/*"],
"nohoist": []
}
}
2. Install Package
yarn add yarn-workspace-commands -D -W
3. Create ywc.config.json
in workspace root
Set rootCommand : true
to make the commands run only on root folder.
{
"test_command_1": {
"commands": [
"echo command 1",
"echo command 2",
"echo command 3",
"echo command 4"
]
},
"test_command_2": {
"commands": ["echo command 5", "ls"]
},
"test_command_3": {
"commands": ["yarn test_root_command"],
"rootCommand": true
}
}
4. Add script to package.json
in workspace root
{
"scripts": {
"test_ywc": "ywc test_command_1 test_command_2 test_command_3",
"test_root_command": "echo hello world root command"
}
}
5. Run the commands
yarn test_ywc
Practical Example
If you have a yarn workspace and want to perform a clean build of all local packages after the installation of new modules.
Add the following to
ywc.config.json
{ "build": { "commands": ["yarn build"] }, "clean": { "commands": ["rm -rf dist", "rm -rf build"] } }
Add the following script to
package.json
in workspace root{ "scripts": { "postinstall": "ywc clean build" } }
Environment Variables
Since the command execution is taking place under node environment, All environment variables available to process.env
can be used as inline arguments.
Example : Package versioning
ywc.config.json
{ "test-env": { "commands": ["echo ${NODE_ENV} ${NODE}"] }, "set-version": { "commands": [ "npm version --no-git-tag-version ${BUILD_BUILDNUMBER}" ] } }
Add the set version script to
package.json
{ "scripts": { "set-version": "ywc set-version" } }
Run the command to update version of all packages
yarn set-version