node.js - npx - 在 `npx prettier` 与 `npx prettier@2` 中,`@` 做了什么?
问题描述
我熟悉node_modules/.bin
和npx
工具。
我最近注意到我们的一个配置运行:
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
解决方案
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
两者都给了我相同的字符串,但这可能会有所不同,具体取决于您的缓存或配置。
推荐阅读
- php - 如何从 Laravel 中抛出的异常中获取 HTTP 状态码?
- php - 在 mysqli 更新查询错误中插入变量
- vue.js - 如何在 VUE 应用中使用 sass?
- python - Django对同一张表的多个外键
- visual-studio - 有没有办法下载特定版本的 Visual Studio 2019?
- python - Python:非捕获组在正则表达式中不起作用
- php - 如何运行 PHP 作为后端和 Angular 作为前端
- nltk - 提高 Spacy 中自定义命名实体识别 (NER) 的召回率
- r - R dplyr 窗口函数,获取满足某些条件的下一个 x 窗口中的第一个值
- sql-server - MS SQL 服务器上 Oracle 的 number(2, 4) 的最佳等效项是什么?