如何使用“yarn”或“npm”列出特定类型的依赖项
Posted
技术标签:
【中文标题】如何使用“yarn”或“npm”列出特定类型的依赖项【英文标题】:How to use "yarn" or "npm" to list specific type of dependencies 【发布时间】:2021-12-06 23:04:00 【问题描述】:在开发包时,我们需要一种方法来知道包“x”是否存在于peer
或dev
依赖项中,我正在尝试
npm ls --omit dev # to list peers deps
尝试过
yarn list --dev # to list dev deps
我没有成功。
有人可以通过简单的npm
或yarn
命令帮助解决这个问题吗?
【问题讨论】:
你应该使用npm list -dev -depth 0
。来自here
好的,但是如何列出对等依赖项呢?
我猜你放弃了 -depth 0 标志,但我稍后会测试它。
好的,我不确定是否可以使用单个 npm 命令。您可以使用npm info <your-package> peerDepencencies
列出单个包的对等依赖项
不幸的是,没有,没有工作,如果它试图检查全局 npm 我无法使用它,因为我希望它在发布包之前在本地工作
【参考方案1】:
如果一切都失败了,您可以编写一个执行 require('./package.json')
的 Node.js 脚本并检查生成的对象的 dependencies
、peerDependencies
和 devDependencies
值。
这不会告诉您它们是否实际安装,也不会告诉您有关传递依赖的信息。
npm
提供了从npm ls
省略开发和对等依赖项的方法,但不是生产依赖项,我想这可能是您遇到的问题。这是一个笨拙的解决方法。
完成此操作以获取对等和开发依赖项列表后,您可以使用 child_process
在每个上运行 npm ls
以查看它们是否实际安装。
这不是一个优雅的解决方案,但如果没有其他工作,它至少应该工作。
> 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'
]
>
【讨论】:
【参考方案2】:当您添加它们时,我相信您的 project file is not configured/missing the dependencies
。无论如何,这有两个步骤,创建依赖项,然后;将其移至下面列出的peerDependencies
。
另外请分享您的项目文件以备将来提问
首先您需要在您的项目中创建这些依赖项(解释如下#2)
Second/Then NPM/Yarn 可以利用它并在您列出时给出正确的结果。
第 1 步: 如何创建这些依赖项
这将在您的项目文件中添加一个属性
npm i @angular/core
"dependencies":
"@angular/core": "^12.0.0"
现在,安装后,将已安装的包名称移动到
peerDependencies
部分。
"peerDependencies":
"@angular/core": "^12.0.0"
第 2 步: 如何列出对等依赖项,请替换 react-native 为您的包
// 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
【讨论】:
以上是关于如何使用“yarn”或“npm”列出特定类型的依赖项的主要内容,如果未能解决你的问题,请参考以下文章