release-it-plugins / workspaces

A release-it plugin for publishing projects with workspaces
MIT License
61 stars 14 forks source link

Is there support for independent versioning? #40

Open DeclanBoller opened 3 years ago

DeclanBoller commented 3 years ago

I'm unsure if I should post this here or in the Release It repo, however I opted to post here as my question relates to monorepos.

Our company has a large monorepo with many packages that are on different versions, we're currently using Lerna which allows us to independently version those packages, however we are looking to move away from it and are exploring our options. Release It + your package seem like really a good fit, but I've noticed that release-it seems to run off a fixed versioning strategy.

I had a quick look in your package and release-it for any flags / code that might indicate the possibility of independent versioning, however came up empty. Is it possible at the moment or is there any scope for it to be added?

rwjblue commented 3 years ago

I think this is generally the same as #36. Like I mentioned over there, I'm definitely open to adding this support (would love it actually).

I think the main tasks here are:

  1. figure out how we decide what to publish
  2. add an option to opt in to this strategy
  3. implement (honestly I think this is easy, once we answer the first question)
  4. profit 💸 😸
xg-wang commented 3 years ago

@rwjblue

figure out how we decide what to publish

For my use case I want exactly lerna's Independent mode:

Independent mode Lerna projects allows maintainers to increment package versions independently of each other. Each time you publish, you will get a prompt for each package that has changed to specify if it's a patch, minor, major or custom change.

Looks like https://github.com/rwjblue/release-it-yarn-workspaces/issues/36 describes lerna's Fixed/Locked mode (default)

Or we can do a hybrid approach, adding a independentWorkspaces?: string[]; which will receive prompts to decide patch/minor/major/custom change if content modified. Another change can add publishUnchanged?: boolean to control publishing unchanged packages, turn it to false by default in future.