如何在pnpm 3.0中使用旧的rinklewrap.yaml?

时间:2019-03-21 16:06:05

标签: pnpm

我们刚刚将pnpm2.25迁移到3.0

我们的项目使用的是--frozen-shrinkwrap选项,以确保我们的依赖项没有不必要的更改。

现在使用pnpm 3.0,可以选择使用--frozen-lockfile 但是,如果我们仅将shrinkwrap.yaml重命名为pnpm-lock.yaml,则表示格式不正确。

没有--frozen-lockfile,某些依赖项是错误的(这就是我们要冻结所有内容的真正原因)。

是否可以使用旧的冻结文件或将其冻结为新格式? 如果没有,恐怕团队会陷入pnpm 2.25

1 个答案:

答案 0 :(得分:0)

不幸的是,没有自动的方法将shrinkwrap.yaml迁移到pnpm-lock.yaml

我建议以下内容。找到破坏项目的依赖版本,并使用pnpm hooks固定工作版本。

因此,如果您知道foo具有依赖项bar@^2.0.0并且bar@2.1.0破坏了您的构建,则可以这样重写foo依赖项中的bar:

pnpmfile.js

module.exports = {
  hooks: {
    readPackage
  }
}

function readPackage (pkg, context) {
  if (pkg.dependencies && pkg.dependencies.bar === '^2.1.0') {
    pkg.dependencies.bar = '2.0.0'
  }

  return pkg
}