1.0.1 โ€ข Published 2 years ago

@davestewart/spaceman v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

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!