While developing a package, we need a way to know if package "x" exist in peer or dev dependencies, I'm trying
npm ls --omit dev # to list peers deps
and tried
yarn list --dev # to list dev deps
I didn't succeed in any of them.
Can someone help to solve this with a simple npm or yarn command?
I believe your project file is not configured/missing the dependencies when you added them. Regardless, there are two steps to this, create the dependency and then; move it to peerDependencies listed below.
Also please share your project file for future questions
First you need to create those dependencies in your project (explained below #2)
Second/Then NPM/Yarn can leverage that and give the correct results when you list.
npm i @angular/core
"dependencies": {
"@angular/core": "^12.0.0"
}
peerDependencies section."peerDependencies": {
"@angular/core": "^12.0.0"
}
// for peer dependencies on a package & specific release
npm info react-native@latest peerDependencies
// for peer dependencies on a package *** replace react-native with your package
npm info react-native peerDependencies
// for production dependencies
npm list -dev -depth 0
// or with flags
npm list -depth 0 -prod true
If all else fails, you can write a Node.js script that does require('./package.json') and inspect the resulting object's dependencies, peerDependencies, and devDependencies values.
This won't tell you if they're actually installed yet or not, and it won't tell you about transitive dependencies.
npm offers ways to omit dev and peer dependencies from npm ls but not production dependencies, and I imagine that might be the issue you're running into. This is a clunky workaround for that.
Once you've done this to get a list of peer and dev dependencies, you can use child_process to run npm ls on each to see if they are actually installed.
This is not an elegant solution, but if nothing else is working, it should at least work.
> require('./package.json').devDependencies
{
'@semantic-release/changelog': '^6.0.0',
'@semantic-release/git': '^10.0.0',
chai: '^4.2.0',
karma: '^6.0.2',
'karma-chai': '^0.1.0',
'karma-chrome-launcher': '^3.1.0',
'karma-coverage': '^2.0.3',
'karma-firefox-launcher': '^2.0.0',
'karma-ie-launcher': '^1.0.0',
'karma-jasmine': '^4.0.0',
'karma-mocha': '^2.0.1',
mocha: '^9.0.0',
nyc: '^15.0.1',
requirejs: '^2.3.6',
'semantic-release': '^18.0.0',
standard: '^16.0.0'
}
> Object.keys(require('./package.json').devDependencies)
[
'@semantic-release/changelog',
'@semantic-release/git',
'chai',
'karma',
'karma-chai',
'karma-chrome-launcher',
'karma-coverage',
'karma-firefox-launcher',
'karma-ie-launcher',
'karma-jasmine',
'karma-mocha',
'mocha',
'nyc',
'requirejs',
'semantic-release',
'standard'
]
>