Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sync yarn.lock back into package.json and lock

I have package.json and yarn.lock files. yarn.lock has versions locked in, I would like to sync, and lock(without the ^) all the versions in yarn.lock, back into package.json. is there any easy way to do that?

in the end I would like to not have "^" in my package.json at all as it leads to too many troubles, and I would like to upgrade packages specificly and not unknowingly when I run a fresh yarn install.

is there any tool or way to quickly replace the versions in package.json with those exsisting inside yarn.lock?

like image 568
vasilevich Avatar asked Oct 24 '17 07:10

vasilevich


1 Answers

I ended up making something myself:

sync-yarnlock-into-packagejson

its a tiny utility that can sync existing package.json with yarn.lock.

syncyarnlock

Syncs yarn.lock versions into an exsisting package.json file, removing dynamic numbers such as with ^, keeping static versions intact.

Install

YARN

yarn global add syncyarnlock

or

NPM

npm install -g syncyarnlock

Usage

  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   
like image 181
vasilevich Avatar answered Oct 13 '22 00:10

vasilevich