In light of recent malware in existing npm packages, I would like to have a mechanism that lets me do some basic checks before installing new packages or updating existing ones. My main issue are both the packages I install directly, and also the ones I install indirectly.
In general I want to get a list of package-version that npm would install before installing it. More specifically I want the age of the packages that would be installed, so I can generate a warning if any of them is less than a day old.
If I could do that directly with npm, that would be neat, but I'm afraid I need to do some scripting around it.
specific use case:
If I executed npm install react-native-gesture-handler on 2021-10-22 it would have executed the post-install hook of a malicious version of ua-parser and my computer would have been compromised, which is something I would like to avoid.
When I enter npm install react-native-gesture-handler --dry-run, it only tells me which version of react-native-gesture-handler it would have installed, but it would not tell me that it would install a version of ua-parser that was released on that day.
additional notes:
- I know that
npm i --dry-runexists, but it shows only the direct packages. - I know that
npm listexists, but it only shows packages after installing (and thus after install-hooks have already done their harm) - both only show packages version and not their age
- I do not know how I would get a list of packages that would come with a install-hook before installing them
- pointers to alternative ways to deal with malicious npm packages are welcome.
- so far my best solution would be to do "--ignore-scripts" but that would come with it's own set of problems
