Skip to content

Commit

Permalink
chore: Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
mydea committed Nov 30, 2021
1 parent 196847d commit 5642f8b
Showing 1 changed file with 29 additions and 27 deletions.
56 changes: 29 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ Update a yarn dependency across a project/workspace & sub-dependencies.

```bash
yu my-dependency 0.5.1 # my-dependency@~0.5.1
yu my-dependency 0.5.1 --exact # [email protected]
yu my-dependency 0.5.1 --caret # my-dependency@^0.5.1
yu my-dependency ^0.5.1 # my-dependency@^0.5.1 (no matter if it used to be caret or tilde)
yu my-dependency ~0.5.1 # my-dependency@^0.5.1 (no matter if it used to be caret or tilde)
yu my-dependency # update to current latest version
yu --all-dependencies # update all `dependencies` to the latest version
yu --all-dev-dependencies # update all `devDependencies` to the latest version
yu -h # Output all available options
```

Expand All @@ -22,44 +24,44 @@ yarn global add yarn-update-dependency

Running this command will:

* Update the specified package to the specified version in the `package.json`
* If run inside of a Yarn Workspace, it will also update all `package.json` in all workspace packages to the same version.
* It will then remove all entries for this package from the `yarn.lock` file
* Finally, it will run `yarn install` to update the dependencies
- Update the specified package to the specified version in the `package.json`
- If run inside of a Yarn Workspace, it will also update all `package.json` in all workspace packages to the same version.
- It will then remove all entries for this package from the `yarn.lock` file
- Finally, it will run `yarn install` to update the dependencies

## Why do I need this?

This package solves two problems.
This package solves two problems.

First, it can be annoying to keep a dependency in sync in a Yarn Workspace. You'll often want to have the same dependency of a package in all workspace packages, which requires you to manually keep this in sync everywhere. With the help of `yu`, the version will be the same in all workspace packages.

Second, it can be tricky to actually update a specific version in Yarn. Just updating the version in the `package.json` and running `yarn` can lead to the package being installed multiple times - e.g. if a dependency also relies on this package.

Take this structure:

* my-app
* [email protected]
* my-dependency-b@^2.0.0
* my-dependency-b@~2.0.1
- my-app
- [email protected]
- my-dependency-b@^2.0.0
- my-dependency-b@~2.0.1

Now you might end up with these packages installed:

* my-app
* [email protected]
* [email protected]
- my-app
- [email protected]
- [email protected]

Now, you want to update `my-dependency-b` to 2.1.0. The version range specified in `my-dependency-a` allows for that, so you might just update this like this:

* my-app
* [email protected]
* my-dependency-b@^2.0.0
* my-dependency-b@~2.1.0
- my-app
- [email protected]
- my-dependency-b@^2.0.0
- my-dependency-b@~2.1.0

And run `yarn` again. However, this will NOT replace the previously installed version, but actually result in this:

* my-app
* [email protected]
* [email protected]
* [email protected]
Which is usually not what you want. The only way to really ensure that all sub-dependencies are also updated (as far as their version ranges allow), is to remove the entry from the `yarn.lock` file first - which is what this package does for you.
- my-app
- [email protected]
- [email protected]
- [email protected]

Which is usually not what you want. The only way to really ensure that all sub-dependencies are also updated (as far as their version ranges allow), is to remove the entry from the `yarn.lock` file first - which is what this package does for you.

0 comments on commit 5642f8b

Please sign in to comment.