@davestewart/spaceman v1.0.1
Spaceman
Easily manage monorepo / workspace tasks via a prompt-based CLI
Abstract
Workspaces provide a streamlined workflow to manage multiple packages within a single repository, but require a certain amount of knowledge, configuration and terminal-fu for everyday tasks.
Spaceman makes running multistep tasks easier by wrapping them in prompts, then running series of commands on confirmation:
Spaceman supports NPM, PNPM, Yarn and Turborepo.
Overview
The following tasks are available:
Packages:
- Install Install one or more packages to a target repository
- Uninstall Uninstall one or more packages from a target repository
- Update Update one or more packages in a target repository
- Reset Remove all Node modules-related files in all repos, and reinstall
Workspaces:
- Share Make a workspace available for use within another workspace
- Group Add a new workspace group
- Add Add a new workspace
- Remove Remove an existing workspace
Setup
Install the library via NPM:
npm i @davestewart/spaceman --save-dev
Usage
Run the library by typing its name:
spaceman
You should immediately see set of navigable tasks:
? ๐ Task โฆ
Packages
โฏ install
uninstall
update
reset
Workspaces
share
group
add
remove
Choose a task to run it and view further options:
โ ๐ Task ยท install
? Workspace โฆ
apps
โฏ docs
web
packages
eslint-config-custom
tsconfig
ui
The choices should be self-explanatory, but check the documentation below for more detail.
Tasks
Packages
Install
Install one or more packages to a target repository:
Workspace - pick the target workspace to install to
Packages - type a space-separated list of packages to install
Dependency type - pick one of normal, development, peer
Confirming will install the new packages.
Uninstall
Uninstall one or more packages from a target repository:
Workspace - pick the target workspace to uninstall from
Packages - pick one or more packages to uninstall
Confirming will remove the selected packages.
Update
Update one or more packages in a target repository:
Workspace - pick the target workspace to update
Packages - type a space-separated list of packages to install
Confirming will update the selected packages.
Reset
Remove all Node modules-related files in all repos, and reinstall:
Confirm reset? - confirm to reset repo and workspaces
Confirming will:
- remove all
lock
files - remove all
node_modules
folders - re-run
npm|pnpm|yarn install
Running reset
can get you out of tricky situations where workspace installs fail or your IDE reports that seemingly-installed workspaces aren't.
Workspaces
Share
Make a workspace available for use within another workspace:
Source workspace - pick the source workspace to share
Target workspace(s) - pick the target workspace(s) to update
Confirming will:
- set the source workspace as a dependency of the target workspace
- run
npm|pnpm|yarn install
Group
Add a new workspace group:
Group name - type a name for the new group
Confirming will:
- create a new top-level folder
- add it to the list of workspaces in
package.json
- ask if the user wants to add a new workspace
Add
Add a new workspace:
Workspace group - pick the target workspace group
Workspace info
- Workspace - add name, optional description and `main` file
- Dependencies - add optional dependencies
- Scripts - add optional scripts
Confirming will:
- create a new workspace folder
- create a private package file
- create a stub
"main": "index.ts/js"
file with named export - optionally install dependencies
Remove
Remove an existing workspace:
Workspace - pick the target workspace
Type to confirm - type the name of the workspace to confirm deletion
Confirming will:
- uninstall workspace dependencies
- remove the workspace folder
- optionally update the repository's
workspaces
list
Finally...
If you like the package, a tweet is always helpful; be sure to let me know via @dave_stewart.
Thanks!