npm install --save-exact 不考虑确切的版本
npm install --save-exact not respecting exact version
我的环境:
- 节点 v6.17.1
- npm v6.14.4
我运行npm install --save --save-exact mjml@4.5.1
,然后我的package.json
显示
"mjml": "4.5.1",
我的 package-lock.json
显示:
"mjml": {
"version": "4.5.1",
"resolved": "https://npm.alertmd.io/mjml/-/mjml-4.5.1.tgz",
"integrity": "sha512-sQVbQ30UwxMpjzkTPdU9RD5OC9ikEjtZEY+zqAioHXAtEmiO0L0eUdfpcb0ni1pu09hMWU4iqRtOyxLgZIOThg==",
"requires": {
"mjml-accordion": "4.5.1",
"mjml-body": "4.5.1",
"mjml-button": "4.5.1",
"mjml-carousel": "4.5.1",
"mjml-cli": "4.5.1",
"mjml-column": "4.5.1",
"mjml-core": "4.5.1",
"mjml-divider": "4.5.1",
"mjml-group": "4.5.1",
"mjml-head": "4.5.1",
"mjml-head-attributes": "4.5.1",
"mjml-head-breakpoint": "4.5.1",
"mjml-head-font": "4.5.1",
"mjml-head-preview": "4.5.1",
"mjml-head-style": "4.5.1",
"mjml-head-title": "4.5.1",
"mjml-hero": "4.5.1",
"mjml-image": "4.5.1",
"mjml-migrate": "4.5.0",
"mjml-navbar": "4.5.1",
"mjml-raw": "4.5.1",
"mjml-section": "4.5.1",
"mjml-social": "4.5.1",
"mjml-spacer": "4.5.1",
"mjml-table": "4.5.1",
"mjml-text": "4.5.1",
"mjml-validator": "4.5.0",
"mjml-wrapper": "4.5.1"
}
}
另外 none 我的其他依赖项将 mjml 作为子依赖项。
然而,当我 运行 npm show mjml version
我得到: 4.6.2
.
我认为使用 --save-exact
会安装准确的 4.5.1 版本,所以我不明白什么?
您假设 --save-exact
将安装准确的版本 (4.5.1
) 是正确的。
但是,当您使用 npm show
命令时,即当您 运行:
npm show mjml version
您实际上是在 https://registry.npmjs.org/mjml
向 npm 注册表执行 http GET
请求。上述命令查询注册表中可用的 registry/database 和 returns 最新版本的 mjml
,即本例中的版本 4.6.2
。
要obtain/check安装了哪个版本的mjml
,您需要使用npm ls
命令来代替。
cd
到你的项目目录。
然后运行:
npm ls mjml
这会将以下内容打印到您的控制台:
└── mjml@4.5.1
我的环境:
- 节点 v6.17.1
- npm v6.14.4
我运行npm install --save --save-exact mjml@4.5.1
,然后我的package.json
显示
"mjml": "4.5.1",
我的 package-lock.json
显示:
"mjml": {
"version": "4.5.1",
"resolved": "https://npm.alertmd.io/mjml/-/mjml-4.5.1.tgz",
"integrity": "sha512-sQVbQ30UwxMpjzkTPdU9RD5OC9ikEjtZEY+zqAioHXAtEmiO0L0eUdfpcb0ni1pu09hMWU4iqRtOyxLgZIOThg==",
"requires": {
"mjml-accordion": "4.5.1",
"mjml-body": "4.5.1",
"mjml-button": "4.5.1",
"mjml-carousel": "4.5.1",
"mjml-cli": "4.5.1",
"mjml-column": "4.5.1",
"mjml-core": "4.5.1",
"mjml-divider": "4.5.1",
"mjml-group": "4.5.1",
"mjml-head": "4.5.1",
"mjml-head-attributes": "4.5.1",
"mjml-head-breakpoint": "4.5.1",
"mjml-head-font": "4.5.1",
"mjml-head-preview": "4.5.1",
"mjml-head-style": "4.5.1",
"mjml-head-title": "4.5.1",
"mjml-hero": "4.5.1",
"mjml-image": "4.5.1",
"mjml-migrate": "4.5.0",
"mjml-navbar": "4.5.1",
"mjml-raw": "4.5.1",
"mjml-section": "4.5.1",
"mjml-social": "4.5.1",
"mjml-spacer": "4.5.1",
"mjml-table": "4.5.1",
"mjml-text": "4.5.1",
"mjml-validator": "4.5.0",
"mjml-wrapper": "4.5.1"
}
}
另外 none 我的其他依赖项将 mjml 作为子依赖项。
然而,当我 运行 npm show mjml version
我得到: 4.6.2
.
我认为使用 --save-exact
会安装准确的 4.5.1 版本,所以我不明白什么?
您假设 --save-exact
将安装准确的版本 (4.5.1
) 是正确的。
但是,当您使用 npm show
命令时,即当您 运行:
npm show mjml version
您实际上是在 https://registry.npmjs.org/mjml
向 npm 注册表执行 http GET
请求。上述命令查询注册表中可用的 registry/database 和 returns 最新版本的 mjml
,即本例中的版本 4.6.2
。
要obtain/check安装了哪个版本的mjml
,您需要使用npm ls
命令来代替。
cd
到你的项目目录。然后运行:
npm ls mjml
这会将以下内容打印到您的控制台:
└── mjml@4.5.1