如何使用“yarn”或“npm”列出特定类型的依赖项

Posted

技术标签:

【中文标题】如何使用“yarn”或“npm”列出特定类型的依赖项【英文标题】:How to use "yarn" or "npm" to list specific type of dependencies 【发布时间】:2021-12-06 23:04:00 【问题描述】:

在开发包时,我们需要一种方法来知道包“x”是否存在于peerdev 依赖项中,我正在尝试

npm ls --omit dev # to list peers deps

尝试过

yarn list --dev # to list dev deps

我没有成功。

有人可以通过简单的npmyarn 命令帮助解决这个问题吗?

【问题讨论】:

你应该使用npm list -dev -depth 0。来自here 好的,但是如何列出对等依赖项呢? 我猜你放弃了 -depth 0 标志,但我稍后会测试它。 好的,我不确定是否可以使用单个 npm 命令。您可以使用npm info <your-package> peerDepencencies 列出单个包的对等依赖项 不幸的是,没有,没有工作,如果它试图检查全局 npm 我无法使用它,因为我希望它在发布包之前在本地工作 【参考方案1】:

如果一切都失败了,您可以编写一个执行 require('./package.json') 的 Node.js 脚本并检查生成的对象的 dependenciespeerDependenciesdevDependencies 值。

这不会告诉您它们是否实际安装,也不会告诉您有关传递依赖的信息。

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”列出特定类型的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

NPM 和 Yarn 使用国内淘宝镜像源提升各依赖安装速度

npm & yarn 包管理机制

npm和yarn更改依赖包全局下载和缓存路径

一文弄懂 npm & yarn 包管理机制(深度解析!)

yarn快速使用及实践建议

在反馈中导入第三方jQuery,CSS,Java Script到index.html是好的,而不是使用npm或yarn