15

When using Yarn Workspaces, we have a project structure like:

- package.json
- packages/
    - package-a/
        - package.json
        - index.js
    - package-b/
        - package.json
        - index.js

If package-b and lots of other packages in this directory are dependent upon package-a and I upgrade the version of package-a after making some changes, How can I upgrade the version package-a in all the dependent packages? Do I have to do it manually or is there a better way?

1

2 Answers 2

5

as i know its not possible for now to manage this with yarn itself. you can use the lerna project https://github.com/lerna/lerna/tree/master/commands/version#readme which supports bumping the version of workspaces

manual (without lerna)

for my existing projects i have done it manually.

attention: this command sets all workspaces to the same version

add postversion in the scripts block of your root ./package.json

{
  "version": "1.0.0",
  ...
  "scripts": {
    "version:package-a": "cd packages/package-a && yarn version --new-version $npm_package_version",
    "version:package-b": "cd packages/package-b && yarn version --new-version $npm_package_version",
    "postversion": "yarn version:package-a && yarn version:package-b"
  }
}
  • now you can run: yarn version --patch
  • this will bump the version of all your workspaces (package-a & package-b) to the same version 1.0.1.

Update 2022-04-08

Solution 1: It's now simpler to bumb all versions with the use of the yarn workspace ... command. In the main package.json you have to put the following:

{
  "version": "1.0.0",
  ...
  "scripts": {
    "version": "yarn workspace package-a version --new-version $npm_package_version && yarn workspace package-b version --new-version $npm_package_version"
  }
}

If you execute now yarn version all the workspace versions are bumped to the same as they inherit from the specified version from the main package.json file

Solution 2: yarn has a solution for this. but it is still in experiment mode. https://yarnpkg.com/features/release-workflow

1
  • 1
    add --no-git-tag-version to version:package-* to prevent yarn from creating the tag multiple times. Like so: "version:package-a": "cd packages/package-a && yarn version --new-version $npm_package_version --no-git-tag-version",
    – Colin
    Commented Jan 10, 2021 at 10:03
0

I believe the other answer is outdated; now with yarn workspaces you can use yarn up <library-name> to bump your dependency in all your workspaces.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.