首页 > 解决方案 > npx - 在 `npx prettier` 与 `npx prettier@2` 中,`@` 做了什么?

问题描述

我熟悉node_modules/.binnpx工具。

我最近注意到我们的一个配置运行:

npx prettier@2

这实际上产生不同的输出

npx prettier

以这种方式调用时,似乎更漂亮的是使用不同的配置文件。

和 do 有npx prettier@2什么不同npx prettier

编辑

按照要求:

$ npx prettier --version
2.1.1

$ npx prettier@2 --version
npx: installed 1 in 1.437s
2.2.0

Prettier 2.2.0几个小时前发布似乎有一个错误

标签: node.jsshellprettiernpx

解决方案


npx将导致下载包并执行bin该包提供的脚本。该命令npx prettier将导致下载最新版本的 prettier 并./bin/prettier.js执行该文件。

npx还允许您使用符号指定要下载的特定语义版本@。所以npx prettier运行最新,但npx prettier@2即使更漂亮的更新到新的主要版本,仍将只运行版本 2。

请参阅npx 包文档

npx [options] <command>[@version] [command-arg]...

-p, --package <package>- 定义要安装的包。这默认为 的值<command>。如果您想调用其他可执行文件之一,或者二进制名称与包名称不匹配,则只有具有多个二进制文件的包才需要这样做。如果提供了此选项,<command>则将按原样执行,而不解释 @version(如果存在)。--package可以提供多个选项,并且将安装所有指定的包。


不过,对您的问题进行更深入的研究会使事情变得有些奇怪。我不确定为什么在运行这两个命令时会得到不同的结果,它们应该是等效的(现在至少因为 2 是当前的主要版本)。

尝试同时打印版本字符串,看看是否有所不同,这可能会显示一些额外的细节

npx prettier --version
npx prettier@2 --version

两者都给了我相同的字符串,但这可能会有所不同,具体取决于您的缓存或配置。


推荐阅读