ds300 / ds300/patch-package

Better support for monorepos

Open
#277 22 comments 57 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
11.2k
Forks
325
PR merge metrics
No merged PRs in 30d

Description

# πŸ› bug report

On a lerna-based monorepo, there are some issues with patch-package.

Suppose I have this folder structure...

```
.
β”œβ”€β”€ ...
β”œβ”€β”€ packages
β”‚ β”œβ”€β”€ a
β”‚ └── patches
β”‚ └── package.json
β”œβ”€β”€ node_modules
└── package.json
```
... and suppose I put patch-package dependency in the package `a` together with a `postinstall` script.
## πŸ€” Current Behavior
The package `a` should work in isolation from the top-level folder and other packages.

- When I do a `npm i` on the top-level folder, it will install dependencies and so do a npm i on `a` (if things are well configured). But probably it will `hoist` dependencies of `a` in the top-level `node_modules` instead of a local one (ie. instead of a `node_modules` inside the `a` folder).
- So `patch-package` will be executed and tries to patch things in `a/node_modules` but since dependencies are hoisted in the top-level folder, it will fail (if no symlink are present).

## πŸ’ Possible Solution

Add a flag to enable patching of the top-level `node_modules`. ie:
- it's very easy to find the root folder, just do a `find-up` for a `package.json` that contains a `workspaces` field and/or a `lerna.json` file.
- From there, if you can't patch the local `node_modules` folder (ie. for instance it doesn't exist) tries to patch the root `node_modules` (when flag is enabled)

## πŸ”¦ Context

- I have a monorepo and I really don't want to put the patches in the root folder, but rather in the packages, so patch-package can work for packages individually.
- Also in my setup there are no local `node_modules` ie. no `node_modules` in `packages/a` and I would like patch-package to work out-of-the-box for this kind of situation (with a flag if it's ok).
- I don't want to patch `patch-package`

## 🌍 Your Environment

| Software | Version(s) |
| ---------------- | ---------- |
| patch-package | 6.2.2

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.