将 yarn.lock 同步回 package.json 并锁定

Posted

技术标签:

【中文标题】将 yarn.lock 同步回 package.json 并锁定【英文标题】:sync yarn.lock back into package.json and lock 【发布时间】:2018-04-04 21:33:02 【问题描述】:

我有 package.jsonyarn.lock 文件。 yarn.lock 已锁定版本,我想同步,并锁定(不带 ^)yarn.lock 中的所有版本,回到 package.json。 有什么简单的方法吗?

最后我希望我的 package.json 中根本没有“^”,因为它会导致太多麻烦,并且我想在运行全新的 yarn install 时专门升级包而不是不知不觉。

是否有任何工具或方法可以将 package.json 中的版本快速替换为 yarn.lock 中现有的版本?

【问题讨论】:

【参考方案1】:

我最终自己做了一些东西:

sync-yarnlock-into-packagejson

它是一个小型实用程序,可以将现有的 package.json 与 yarn.lock 同步。

同步锁

yarn.lock 版本同步到现有package.json 文件中,删除动态数字(例如使用^),保持静态版本不变。

安装

yarn global add syncyarnlock

新PM

npm install -g syncyarnlock

用法

  Usage: syncyarnlock [options]

  Sync `yarn.lock` package versions, into package.json
  Options:

    -V, --version                output the version number
    -d, --dir <path>             directory path where the yarn.lock file is located (default to current directory)
    -p, --dirPackageJson <path>  directory of project with target package.json, if not set, -d will be used
    -s, --save                   By default don't override the package.json file, make a new one instead package.json.yarn
    -k, --keepUpArrow            By default the ^ or any other dynamic numbers are removed and replaced with static ones.
    -g, --keepGit                By default direct git repositories are also replaced by the version written in yarn.
    -l, --keepLink               By default direct link: repositories are also replaced by the version written in yarn.
    -a, --keepVariable <variable>By default everything is converted to yarn version, write a part of the type you wish not to convert, seperate by comma if more than one, to not replace git and link you would use +,link:
    -h, --help                   output usage information
  Transforms yarn.lock files to JSON

  Examples:
  //perform inside a directory with yarn.lock and package.json, will output package.json.yarn in the same directory.
  syncyarnlock   

【讨论】:

您能否检查此链接中提到的问题 - github.com/vasilevich/sync-yarnlock-into-packagejson/issues/1 是的,我做到了,谢谢你告诉我,我会尽快修复它

以上是关于将 yarn.lock 同步回 package.json 并锁定的主要内容,如果未能解决你的问题,请参考以下文章

在 docker 容器内安装依赖项后如何复制回主机 package-lock.json/yarn.lock?

从 yarn.lock 中删除依赖项

Yarn:将 JavaScript 依赖项重新部署到生产服务器的过程(使用 `yarn.lock` 文件)

为啥我的 yarn.lock 文件中有僵尸包?

我应该提交 yarn.lock 和 package-lock.json 文件吗?

如何解决 Yarn.lock 中开发依赖项的特定依赖项