https://github.com/dopt/please
A CLI for developing in monorepos - not building them
https://github.com/dopt/please
cli monorepos pnpm pnpm-monorepo pnpm-workspaces
Last synced: 2 months ago
JSON representation
A CLI for developing in monorepos - not building them
- Host: GitHub
- URL: https://github.com/dopt/please
- Owner: dopt
- Created: 2023-12-06T15:53:31.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-05T16:23:39.000Z (over 1 year ago)
- Last Synced: 2024-11-28T15:43:36.456Z (10 months ago)
- Topics: cli, monorepos, pnpm, pnpm-monorepo, pnpm-workspaces
- Language: TypeScript
- Homepage:
- Size: 604 KB
- Stars: 19
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Please
A CLI for developing in monorepos - not building them
[](https://www.npmjs.com/package/@dopt/please)
[](https://github.com/dopt/please/actions/workflows/ci.yml)### Why
Because developing in monorepos can be challenging. There are great tools for building them (e.g. [turbo](https://turborepo.org/), [bazel](https://bazel.build/), [rush](https://rushjs.io/), [gradle](https://gradle.org/), etc) but the experience of developing in them often involves lots of manual effort.
By developing, I mean, running/executing code. For example, consider our own experience at Dopt. A typical workflow for basic feature development in our application involved running commands across 10+ packages to start various services and their databases.
Depending on what you were focused on, certain packages would need to be started in different ways, e.g., w/ file-watchers versus without.
In practice, this meant lots of windows and lots of commands. A situation that made it easy to miss an error stack or an important log.
### Introducing `please`
A concise CLI for running package scripts across packages with interleaved output. The above scenario was transofmred into the following
```
please start:service-x,service-y,service-z dev:{app-*} up:{database-*}
```### Install
```bash
# w/ pnpm
pnpm add -Dw please# w/ yarn
yarn add -D please# w/ npm
npm install -D please
```### Usage
Basic:
```
$ please dev:@scope/package-1 run:@scope/package-2$ please dev:@scope/package-1 run:@scope/package-2,@scope/package-3
$ please dev:@scope/package-1,@scope/package-2 run:@scope/package-3,@scope/package-4
```Advanced:
```
$ please dev:{@scope/*}$ please dev:{@scope/*} run:package-1,package-2
```