How can I find what version of an npm module is used across github repo?

Viewed 509

I have an npm module I develop. I want to know which version of this module is being used across the different projects in my company's organization repository. Is there a way to run a search for a specific versions of a module?

For example my latest version of the module is "5.x.x". I want to find all usages that are not "^5.x.x".

I tried searching for filename:package.json my-module but this gives me too many results, which most of them is the latest version ("^5.x.x").

Maybe there is some other way to achieve it which is not the Github search?

Edit:

  • The organization repository is huge and it is impossible to have it all cloned on the disk.
  • In our organization we have a solution that solves this problem using coding (a service that manages all dependencies across the organization which exposes REST). I am looking for something that can be achieved easily without coding (too much).
2 Answers

You can use find and grep commands in Bash:

$ cd path/to/your/repo
$ find . -name package.json | xargs grep '"my_module":'

This command lists all lines with your module in all package.json files across the repository. If this yields too many results, you can grep some more, for example:

$ find . -name package.json | xargs grep '"my_module":' | grep -v '\^5\.'

which excludes any lines mentioning your module with major version number of 5.

Given the restrictions placed on GitHub search, it's unlikely you'll be able to easily do this in the GitHub interface.

If you have all your repositories cloned inside a single directory and you're on a UNIX-like operating system, you can use grep (or do all kinds of programmatic searches):

grep '"my-module": ' */package.json | grep -v '"\^5\.'

The above assumes that the entry starts with ^ and not ~ or a digit. Modify as needed. In your case, it's probably fine. If it isn't, it will show some version 5 instances, which is better than having it not show earlier instances.

Related