Skip to content

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

Open
@elliottkember

Description

@elliottkember

I just found out about #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 ❤️

Activity

elliottkember

elliottkember commented on Oct 31, 2024

@elliottkember
Author

Oops, a side note – turns out the local patch of patch-package doesn't work, because it only applies the patch after installation. This means in CI, when the packages are all checked out fresh, the patch-package patch isn't applied and the warning persists!

linked a pull request that will close this issue on Oct 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @elliottkember

      Issue actions

        Don't warn about mismatched versions when using multiple patches for the same library · Issue #541 · ds300/patch-package