This package modifies package-lock.json to force the installation of specified versions of a set of transitive dependencies (dependencies of dependencies).
- Add a field
resolutions
with the dependency version you want to fix at the main level of yourpackage.json
.
Example:
"resolutions": {
"ssri": "8.0.5"
}
- Add force-resolutions to the preinstall script so that it patches the
package-lock.json
file before everynpm install
:
"scripts": {
"preinstall": "npx force-resolutions"
}
- Install dependencies
npm install
Remember that whenever you run npm install
, the preinstall
command will run automatically.
If a package.lock.json
is not detected the script will not run, and any other command after it will be executed as normal.
- To confirm that the right version of the package you are trying to override was installed, use:
npm ls ssri
NodeJS and NPM versions NodeJS version:
v16.13.1
NPM version:
8.1.2
Instructions
- Install the dependencies of the project:
npm install
- Build the project:
npm run build
- Go to the dist folder
cd dist
-
Copy a package.json and a package-lock.json file into the dist folder
-
Add a resolutions field in the package.json and inside of it a package to override
-
Run the compiled file
node index.js
- Search in the package-lock.json to see that the versions of the packages are updated
This project was created because npm-force-resolutions became not suitable for the necesities the team I was working in had. We needed to avoid triggering the execution of the script when there was no package-lock.json
, descriptive error logs, descriptive logs during the execution, faster download times, compatibility with multiple npm versions and faster execution times.
NPM released a new way to handle resolutions, now there is a property on package.json to do them, is called overrides. If you are using recent versions of node and npm you probably don't need this package. You can read more about overrides here:
To simplify communication I have created a discord community, if you detect an issue with this package or want to improve it in some way, you can contact me here. Normally I am busy with work, but if you contact me here I'll reply faster.
See other versions of the package on NPM
This project was inspired by the next package: npm-force-resolutions.
Special thanks to Denis Gulin for contributing to fix issues that were happening with the package and improving the code.