【问题标题】:Ensure package-lock.json keeps specific versions for dependencies' requirements确保 package-lock.json 为依赖项的要求保留特定版本
【发布时间】:2018-11-06 12:39:19
【问题描述】:

对我们的依赖项之一的依赖项进行了一些更新破坏了我们的构建,并且很难找出问题的原因是什么......

我们终于注意到 @vue/component-compiler-utils 需要 "prettier": "^1.11.1" 并且 - 正如 vue webpack template missing parser 中所讨论的那样,Prettier@1.13.0 导致了我们遇到的问题,然后回滚到 Prettier@1.12.0

我们如何确保package-lock.json 将依赖项“锁定”到某个版本,并且不会随着时间的推移或重新安装时更新?

这是我们的package.json 的示例,从中生成不正确 锁定文件:

{
  ...
  "dependencies": {
    "html-loader": "0.5.1",
    "vue": "2.5.16",
    "vue-class-component": "6.2.0",
    "vue-property-decorator": "6.1.0",
    "vue-router": "3.0.1",
    "vuex": "3.0.1",
    "vuex-class": "0.3.0",
    ...
  },
  "devDependencies": {
    "@types/jest": "22.0.1",
    "@vue/cli-plugin-babel": "3.0.0-beta.11",
    "@vue/cli-plugin-eslint": "3.0.0-beta.11",
    "@vue/cli-plugin-typescript": "3.0.0-beta.11",
    "@vue/cli-plugin-unit-jest": "3.0.0-beta.7",
    "@vue/cli-service": "3.0.0-beta.11",
    "@vue/eslint-config-airbnb": "3.0.0-beta.11",
    "@vue/eslint-config-typescript": "3.0.0-beta.11",
    ...
  }
}

【问题讨论】:

    标签: npm webpack npm-install vue-cli package-lock.json


    【解决方案1】:

    使用npm shrinkwrap 解决了这个问题,它将package-lock.json 转换为npm-shrinkwrap.json,它会散列并锁定每个安装的特定版本。

    查看What is the difference between npm-shrinkwrap.json and package-lock.json?了解更多详情

    【讨论】:

      【解决方案2】:

      我不完全确定 npm shrinkwrap 是否解决了 npm v6+ 中的问题。

      这是为 vue-loader 生成的 npm-shrinkwrap.json 文件的 sn-p。

      似乎即使是收缩包装也没有锁定所需的版本。

      "vue-loader": {
        "version": "14.0.3",
        "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-14.0.3.tgz",
        "integrity": "sha512-5kFK/df1jgVoFcTB9p19rrYcyuYduoZzUSf6chMVsIRmVL9AKPYCa9JGLAZsU1XXGbGO9MSkwbum91u2dx7YcQ==",
        "dev": true,
        "requires": {
          "consolidate": "^0.14.0",
          "hash-sum": "^1.0.2",
          "loader-utils": "^1.1.0",
          "lru-cache": "^4.1.1",
          "postcss": "^6.0.8",
          "postcss-load-config": "^1.1.0",
          "postcss-selector-parser": "^2.0.0",
          "prettier": "^1.7.0",
          "resolve": "^1.4.0",
          "source-map": "^0.6.1",
          "vue-hot-reload-api": "^2.2.0",
          "vue-style-loader": "^4.0.1",
          "vue-template-es2015-compiler": "^1.6.0"
        }
      

      【讨论】:

      • 我们最终切换到 Yarn,他们的锁文件实际上是一个“锁”文件。如果您以yarn install --pure-lockfile 运行安装,它将安装yarn.lock 中指定的版本。
      猜你喜欢
      • 2019-03-26
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多