-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
29 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 | ||
``` | ||
|
||
|
@@ -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. |