ds300 / patch-package

Fix broken node modules instantly 🏃🏽‍♀️💨
MIT License
10.32k stars 288 forks source link

Can't find lockfile entry for non semver compliant packages when using yarn #360

Open MHekert opened 2 years ago

MHekert commented 2 years ago

When trying to add patch for package that has non semver compliant version in its package.json patch generation throws error:

Can't find lockfile entry for ...

For example: plugin serverless-plugin-aws-alerts has version specified as v1.7.4, while in yarn.lock it's saved as 1.7.4. Because of this entry from yarn.lock is filtered out in following code:

const entries = Object.entries(appLockFile.object).filter(
  ([k, v]) =>
    k.startsWith(packageDetails.name + "@") &&
   v.version === installedVersion,
)

Potential solution that I would like to propose is to coerce versions (semver.coerce) while searching for lockfile entry in yarn.lock.