npx - 在 `npx prettier` 和 `npx prettier@2` 中,`@` 做了什么?

npx - what does the `@` do in `npx prettier` vs `npx prettier@2`?

我熟悉 node_modules/.binnpx 工具。

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

npx prettier@2

这实际上产生了与

不同的输出
npx prettier

以这种方式调用时,prettier 似乎使用了不同的配置文件。

npx prettier@2npx prettier 有何不同?

编辑:

根据要求:

$ npx prettier --version
2.1.1

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

Prettier 2.2.0 是 released a few hours ago and seems to have a bug

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

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

npx package docs:

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

-p, --package <package> - define the package to be installed. This defaults to the value of <command>. This is only needed for packages with multiple binaries if you want to call one of the other executables, or where the binary name does not match the package name. If this option is provided <command> will be executed as-is, without interpreting @version if it's there. Multiple --package options may be provided, and all the packages specified will be installed.


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

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

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

两者都给我相同的字符串,但根据您的缓存或配置,这可能会有所不同。