From 0dc97cbbcb23cdc22426e59a9d554e142a58fecb Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Thu, 29 Sep 2022 09:30:18 -0500 Subject: [PATCH] Add Execute A Command From The Workspace Root as a pnpm TIL --- README.md | 7 ++++- ...ecute-a-command-from-the-workspace-root.md | 30 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 pnpm/execute-a-command-from-the-workspace-root.md diff --git a/README.md b/README.md index 052dc8f..d8edc46 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1246 TILs and counting..._ +_1247 TILs and counting..._ --- @@ -43,6 +43,7 @@ _1246 TILs and counting..._ * [Netlify](#netlify) * [Next.js](#nextjs) * [Phoenix](#phoenix) +* [pnpm](#pnpm) * [PostgreSQL](#postgresql) * [Prisma](#prisma) * [Python](#python) @@ -552,6 +553,10 @@ _1246 TILs and counting..._ - [Specifying The Digest Directory](phoenix/specifying-the-digest-directory.md) - [Specifying The Server Port](phoenix/specifying-the-server-port.md) +### pnpm + +- [Execute A Command From The Workspace Root](pnpm/execute-a-command-from-the-workspace-root.md) + ### PostgreSQL - [A Better Null Display Character](postgres/a-better-null-display-character.md) diff --git a/pnpm/execute-a-command-from-the-workspace-root.md b/pnpm/execute-a-command-from-the-workspace-root.md new file mode 100644 index 0000000..a21cf61 --- /dev/null +++ b/pnpm/execute-a-command-from-the-workspace-root.md @@ -0,0 +1,30 @@ +# Execute A Command From The Workspace Root + +[`pnpm`](https://pnpm.io/) is designed to work with monorepos. In a monorepo +project you'll have a root `package.json` (in the top-level directory of the +repository) as well as individual `package.json` files per app and package. If +you're working from within the directory of one of your apps and you invoke a +command, `pnpm` should execute that command for this app. The `pnpm` CLI does +give you control to execute the command from the workspace root instead if +you'd like. + +A likely setup is that both your root `package.json` and your individual app +`package.json` files have a `build` command. + +Invoking the build command from `apps/my-app`: + +```bash +pnpm build +``` + +will run the `my-app` build command, as specified in its `package.json`. + +You could instead throw in [the `--workspace-root` +flag](https://pnpm.io/pnpm-cli#-w---workspace-root). + +```bash +pnpm --workspace-root build +``` + +This will ignore whatever subdirectory you are in and invoke the `build` +command defined in your top-level `package.json` file.