当前位置: 首页 > 知识库问答 >
问题:

如何实际使用package-lock.json进行基于锁定版本的安装?

百里雅珺
2023-03-14

刚刚从npm 3更新到5,以使用此功能。

例如,我想稳定的主要包是bootstrap-我想暂时阻止它在bootstrap@4.0.0-alpha.6的版本,但是npm install找到4.0.0-beta.28。

如果Inpmupdate任何包,package-lock.json都将得到更新。

这是我的bootstrap的package.json条目:

“bootstrap”:“^4.0.0-alpha.6”

这是我看到的安装的软件包和元数据:

$ npm list 2>/dev/null | grep bootstrap
├─┬ bootstrap@4.0.0-alpha.6
├─┬ bootstrap-vue@0.16.1
│ ├── bootstrap@4.0.0-alpha.6 deduped


(env) jluc@py$ grep bootstrap package.json package-lock.json
package.json:    "bootstrap": "^4.0.0-alpha.6",
package.json:    "bootstrap-vue": "^0.16.1",
package-lock.json:    "bootstrap": {
package-lock.json:      "version": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz",
package-lock.json:    "bootstrap-vue": {
package-lock.json:      "version": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.16.1.tgz",
package-lock.json:        "bootstrap": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz",
    null

不好。npm再次发现bootstrap beta和package-lock.json没有任何作用,实际上它是根据npm install所做的重写的。这与您在dev中希望的行为是一致的,但没有告诉我如何使用lockfile来稳定包。

(env) jluc@trynpmlock$ npm list 2>/dev/null | grep bootstrap
├── bootstrap@4.0.0-beta.2
├─┬ bootstrap-vue@0.16.1
│ ├── bootstrap@4.0.0-beta.2 deduped

(env) jluc@trynpmlock$ grep bootstrap package.json package-lock.json
package.json:    "bootstrap": "^4.0.0-alpha.6",
package.json:    "bootstrap-vue": "^0.16.1",
package-lock.json:    "bootstrap": {
package-lock.json:      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-beta.2.tgz",
package-lock.json:    "bootstrap-vue": {
package-lock.json:      "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.16.1.tgz",
package-lock.json:        "bootstrap": "4.0.0-beta.2",

>

  • 如果我删除了package.json,并且只有一个包含package-lock.json的目录,那么npm install只安装了很少的内容,给我留下了一个截断的package-lock.json

    npm安装有一个--no-package-lock选项,但这会阻止更新package-lock.json。

    基本上,我如何告诉npm从package.json安装所有东西,但尊重package-lock.json中的锁?我使用的命令与npm install不同吗?这是因为npm install的doc在包安装的上下文中引用了锁,但是锁在整个安装package.json时不适用吗?

    是的,我知道我可以指定“bootstrap”:“4.0.0-alpha.6”,减去^,以手动锁定版本。

    我的环境:

    (env) jluc@py$ npm -v
    5.5.1
    
  • 共有1个答案

    唐元青
    2023-03-14

    您需要使用npm ci命令从package-lock.json进行安装

    参见:https://blog.npmjs.org/post/171556855892/Inductioned-npm-ci-for-faster-more-reliable

     类似资料: