使用 npm query 为了更好的依赖关系的管理

可在npm CLI作的v8。16.0, query 是一个新的子命令,暴露了一个强大的新方式,检查和了解的依赖你Node.js 的项目。 它带来一个新的强大 query 语法,基于一个熟悉的模式:CSS。 这是正确的,你现在可以使用特殊CSS选择与 npm query 更好地了解项目的依赖树。

在本文中,我们将讨论为什么重要的检查的依赖,审查 npm query 例子,潜入该法为这一新指令,并探索不同的方式来格式和操纵其输出。

为什么要检查依赖?

首先,为什么是任意的这个有用吗? 这里有一些原因,人们都希望有一个清晰的画面,他们的依赖:

  • 安全审核 :对顶级的安全漏洞(和随后的修补)是至关重要的运输高质量的现代化软件。 好的工具依赖周围的检查使得修复这些问题更容易和更快

  • 稳定 :当的错误中的一个项目的依赖会造成问题,这是至关重要的,能够迅速确定受影响的版本,并推出了修复

  • 捆绑大小 :强大的依赖性检查工具可以帮助软件的小组在他们的努力船舶小束到最终用户和提高绩效

  • 清楚的 :具有更好的把握这些软件包,安装和他们的预期目的有助的工程师作出更好的决策和编写更好的代码

基本范例

以前潜入基本事实的命令的论点和CSS-基于法,如何在 Windows 11 中以管理员身份运行文件资源管理器(5 种方法)这里有一些基本的实例来展示力量和精度,这种新的 npm query 命令提供。

许可证审计

假设你写封闭源,以营利为目的的软件和需要,以确保没有你的依赖关系,发布下的GPL许可证(这需要下游用户也释放他们的软件GPL或兼容许可证). 表面可能有问题的包裹,如何修复 Spotify 在 Android 上不断崩溃的问题(9 种方法)可以使用以下 query 命令:

npm query "[license=GPL]"

B.N., 这是不是作为法律咨询;应咨询一名律师,如果你有具体问题有关的软件许可证

安装后的脚本中检查

一些软件运行的脚本后安装,如何解决 Android 上 Google Chrome 速度缓慢的问题(8 种方法)并且可能需要检查这些脚本,以确保他们不是做什么邪恶的. 与 npm query 你可以很容易地找到任何的依赖性,注册一个 postinstall 脚本:

npm query ":attr(scripts, [postinstall])"

看到 MDN docs 为一个复习如何CSS :attr() 功能起作用。

语法

主手段选择的特定依赖关系类似于CSS ID选择。 如何修复 Windows 11 中的“允许 Chrome 访问网络”错误这种命令将清单的所有副本的 lodash 安装:

npm query "#lodash"

如果你想要验证的特定版本,说 4.17.21 是安装,仅仅是修改命令,像这样:

npm query "#lodash@4.17.21"

npm query 还支持semver范围,只要你使用的更详细的版本,上述命令(其中采用一个 name 属性的选择和 semver 伪选择):

npm query "[name=lodash]:semver(^4)"

目前,我们开始看到灵活性这个CSS-基于法提供的。 只有一对夫妇更多的核心概念(下文概述),只能把你的前CSS经验建造的查询的答复非常具体的问题,有关的依赖树。

依赖集团

依赖集团( prod 依赖关系与 dev 依赖关系,例如)表示熟悉的CSS类的语法。 因此,这里是如何 query 对所有 dev 相关性:

npm query ".dev"

此 query 回报所有可传递的依赖关系 dev 小组。 如何清除 Windows 11 中的缓存(7 种方法)但是,假设你想要限制的名单仅仅是直接的 dev 依赖性的项目。

你可以利用 :root 伪选择,其中表示你的项目,并CSS儿童组合, > 限制的范围 query:

npm query ":root > .dev"

特别伪选择

除了标准的CSS伪选择(例如 :not(), :has(), :empty 等等), npm query 增加了一些特别的伪选择器特有的查询依赖树:

  • :private –选择的依赖性标记为"私人"在他们的软件包。json文件( "private": true)

  • :deduped –选择重复数据删除的依赖关系

  • :overridden –选择的依赖,已经复盖

  • :extraneous –选择的依赖关系,可以是以前遗留下来的国家,因为他们不再依靠任何软件包的依赖树

  • :missing –选择依存关系要求的其他软件包,但是没有找到磁盘上

  • :semver(<spec>) –选择的依赖关系的匹配指定的语版本的规范

  • :path(<path>) –选择的依赖关系的匹配指定的路径

  • :type(<type>) –选择的依赖关系的类型,例如 git (为了一个混帐回购协议), directory (为当地的目录),等等; 看看这个综合 清单的可能类型

熟悉CSS的范例

与特别伪选择上面列出的全部力量CSS可用于解开一些非常强大的查询以深入的依赖树。 这是一个复习一些特别有帮助CSS概念:

  • 组合器 : > 组合的我们先前使用的选择依赖匹配的选择权,只要他们是直接的后裔(儿童)的选择。 的 组合是相似的,但是所有的后裔(儿童、孙子孙女和外). 的~ 组合的可用于选择兄弟姐妹

  • 属性选择 :属性选择,就像 [key=value],选择的依赖性,有一个属性 key 被设定为 value. 这仅适用于串值 package.json;为更强大的属性的选择,使用 :attr() 集群功能

  • 先进的选择 : * 是一个特殊的选择,正如在CSS,选择所有依赖性。 多个序列的选择可以结合在一起使用 , 选择,这产生了该联盟的结果选择任何一侧

格式和操纵的输出

默认情况下, npm query 产出大幅象,格式与内容的行一个凹痕水平的两个空间。 这是完美的发送的数据JSON文件中使用的其他程序,但它不是伟大的人会喜欢阅读的输出。

Usage in the terminal with jq

jq is a popular and fast JSON processor that’s typically used directly in the command line. There are lots of great tutorials and examples online for how to use jq, including the official jq manual, but here is a quick example to demonstrate its power.

让我们再利用我们的 query 从前在文章中选择的所有依赖关系,采用一个 postinstall 脚本( npm query ":attr(scripts, [postinstall])"),此时只显示他们的名字,版本,以及路径上盘:

npm query ":attr(scripts, [postinstall])" | jq '.[] | "\(.name)@\(.version) - \(.path)"'

这里是一些样品产出:

"esbuild@0.14.36 - /workspaces/proutils.dev/node_modules/esbuild"
"svelte-preprocess@4.10.6 - /workspaces/proutils.dev/node_modules/svelte-preprocess"

方案使用情况

为甚至更大的控制,以及运行能力先进的处理和分析的结果,国家防范机制发布了一个包裹叫 树木 内使用的一个Node.js 程序。 它拥有一个承诺基于API和支持相同CSS选择作为CLI version. 更多细节,拟用,看一看在 官方文档 .

如何改进依赖关系的管理 npm query

在本文中,我们已经采取了一个快速看一下新的强大 npm query CLI的命令。 有一个精心打造的 query 你可以更容易地实现深深入的依赖树。

有很多的使用情况,其中包括 一个伟大的列表中的 npm query 文件 . 让你的精神的轮子转动的可能性,这里只是一些更多的使用情况的措辞作的问题,开发团队可能必须对他们的依赖性叠。 同时也提供了查询,这将有助于回答这些问题:

  • 我需要运行

    npm install

    因为我丢失了一些依赖我的队友加入?

    • npm query "*:missing"

  • 是否有任何软件包取决于两个

    lodash

    underscore

    ?

    • npm query "*:has(> #lodash ~ #underscore)"

  • 其中包叶中的节点的依赖树?

    • npm query ":not(:has(> *))"

什么其他有用的查询可能你来了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值