如果我从npm view jasmine version
运行npm view jasmine version -g
或~
,则返回的版本为3.3.1
我需要的版本为2.8.0
,所以我尝试使用npm install jasmine@2.8.0 -g
降级,但是npm view jasmine version
仍然是3.3.1
现在,如果我使用npm list -g
,我会看到茉莉花(2.8.0
)的正确版本...那么3.3.1是哪里来的?
├─┬ jasmine@2.8.0
│ ├── exit@0.1.2
│ ├─┬ glob@7.1.3
│ │ ├── fs.realpath@1.0.0
│ │ ├─┬ inflight@1.0.6
│ │ │ ├── once@1.4.0 deduped
│ │ │ └── wrappy@1.0.2
│ │ ├── inherits@2.0.3
│ │ ├─┬ minimatch@3.0.4
│ │ │ └─┬ brace-expansion@1.1.11
│ │ │ ├── balanced-match@1.0.0
│ │ │ └── concat-map@0.0.1
│ │ ├─┬ once@1.4.0
│ │ │ └── wrappy@1.0.2 deduped
│ │ └── path-is-absolute@1.0.1
│ └── jasmine-core@2.8.0
答案 0 :(得分:1)
了解npm view
命令:
运行以下两个npm view
命令之一:
npm view jasmine version
或
npm view jasmine version -g
您正在向npm注册表发送一个GET
请求。更具体地说,您正在向以下端点发送请求:
https://registry.npmjs.org/jasmine
您可以通过在命令中附加-d
选项以获取其他日志记录信息来进行验证。例如,如果您运行;
npm view jasmine version -d
您会在日志中看到其他信息,其中包括以下内容:
npm http request GET https://registry.npmjs.org/jasmine
注意:上面的这一行指示您的view
命令向其发出请求的端点。
那么3.3.1是哪里来的?
3.3.1
是npm注册表中可用的 jasmine 软件包的最新版本。任何view
命令的结果都不会指示有关系统上安装的软件包的信息,而是会返回有关npm注册表中保留的软件包的信息(元数据)。
运行时,您将继续看到版本3.3.1
登录到控制台;
npm view jasmine version
(从系统上的任何目录位置开始),直到将jasmine
的较新版本发布到npm注册表中为止。
附加说明:
您正在运行的两个npm命令,即:
npm view jasmine version
和
npm view jasmine version -g
实际上是相同的命令。 view
命令不提供-g
选项。 -g
选项将被忽略。
npm list
命令(您已经发现)应该用于检索有关系统上安装的软件包的信息。因此,为什么它指示您的预期结果。