sidoshi
sidoshi

Reputation: 2160

How to bump version in all the packages when using yarn workspaces?

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?

Upvotes: 15

Views: 8218

Answers (2)

Michał K
Michał K

Reputation: 42

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.

Upvotes: 0

SanQu
SanQu

Reputation: 71

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

Upvotes: 5

Related Questions