How to know the version of currently installed package from yarn.lock How to know the version of currently installed package from yarn.lock typescript typescript

How to know the version of currently installed package from yarn.lock


I found out that yarn whyis the best way to find out the currently installed version of a package (Thanks to one of my colleague who point out to me). This is how my test code looks in the JavaScript.

const { spawnSync } = require('child_process');const packageName = 'micromatch';const whyBuffer = spawnSync('yarn', ['why', packageName]);const grepBuffer = spawnSync('grep', ['Found'], { input: whyBuffer.stdout });const outputArray = grepBuffer.stdout.toString().split('\n');console.log(outputArray); // ['info \r=> Found "micromatch@3.1.10"',    'info \r=> Found "fast-glob#micromatch@4.0.2"', ''  ]const parsedOutputArray = outputArray.filter(output => output.length > 0).map((output) => output.split('@')[1].replace('"', ''))console.log(parsedOutputArray); // [ '3.1.10', '4.0.2' ]


Since, you know the name of the package, do this:

yarn list --pattern <package_name>

The above command will get you all installed versions of a package at any depth. For example, I have different versions of camelcase library installed at various depths. On running the command : yarn list --pattern "camelcase", this is the output:

yarn list v1.22.5├─ camelcase@6.2.0└─ yargs-parser@13.1.2   └─ camelcase@5.3.1


npm list --depth=0 is 1000x faster than yarn why <each package>.It also tells you about extraneous dependencies, unmet peer deps, etc, but the output is very clean - still cleaner than yarn why