Don't warn about mismatched versions when using multiple patches for the same library

Open
#541 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
node.js, typescript
Domain
tooling

Research direction

Start with dist/applyPatches.js and trace the version-mismatch warning path for patches whose versions contain a '+'. Verify that compatible multi-patch versions no longer warn while genuine version mismatches still do, then run the relevant project checks; the issue does not name a test file.

Written by the indexing model from the issue text.

Description

I just found out about https://github.com/ds300/patch-package/issues/43 which will make our patches really easy to work with by separating patches from each other. What a great feature!

Unfortunately we have enabled --error-on-warn to ensure we keep our patches up to date, and so the warnings we get from multi-patch names causes our builds to break.

I've patched patch-package with patch-package locally to skip + version patches, to work around this and avoid the warning. I'm sure there are some gotchas with the .includes('+') syntax I've used here (NPM versions that include the + character?) but I thought I should submit this as an issue to see whether it could be applied.

Here is the diff that solved my problem:

diff --git a/node_modules/patch-package/dist/applyPatches.js b/node_modules/patch-package/dist/applyPatches.js
index c0217cf..90f3eda 100644
--- a/node_modules/patch-package/dist/applyPatches.js
+++ b/node_modules/patch-package/dist/applyPatches.js
@@ -92,13 +92,19 @@ function applyPatchesForApp({ appPath, reverse, patchDir, shouldExitWithError, s
                 // yay patch was applied successfully
                 // print warning if version mismatch
                 if (installedPackageVersion !== version) {
-                    warnings.push(createVersionMismatchWarning({
-                        packageName: name,
-                        actualVersion: installedPackageVersion,
-                        originalVersion: version,
-                        pathSpecifier,
-                        path,
-                    }));
+                    // Ignore multi-patch versions
+                    if (version.includes('+') && version.split('+')[0] === installedPackageVersion) {
+                        console.log("Ignoring multi-patch version mismatch for", pathSpecifier);
+                    } else {
+                        warnings.push(createVersionMismatchWarning({
+                            packageName: name,
+                            actualVersion: installedPackageVersion,
+                            originalVersion: version,
+                            pathSpecifier,
+                            path,
+                        }));
+                        
+                    }
                 }
                 console.log(`${chalk_1.default.bold(pathSpecifier)}@${version} ${chalk_1.default.green("✔")}`);
             }

This issue body was partially generated by patch-package ❤️

Dominant language
TypeScript
Stars
11.2k
Forks
325
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ds300/patch-package

All issues in ds300/patch-package

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.