A typical release goes like this:
- You must be a member of the
@mui
org in npm to publish the release - Set up your npm authToken by logging into npm (
npm login
) . This will save a token to~/.npmrc
as a line that looks like this://registry.npmjs.org/:_authToken=npm_000000000000000000000000000000000000
- Make sure you have added the
material-ui-docs
remote to deploy the documentation:git remote add material-ui-docs https://github.com/mui/material-ui-docs.git
- Generate a GitHub Token at https://github.com/settings/personal-access-tokens/new and add it to your shell rc script (either
.bashrc
or.zshrc
) asGITHUB_TOKEN
.
The following steps must be proposed as a pull request.
-
Generate the changelog with
pnpm release:changelog
The output must be prepended to the top levelCHANGELOG.md
pnpm release:changelog --help
for more information. If your GitHub token is not in your env, pass it as--githubToken <my-token>
to the above command. -
Clean the generated changelog:
- Match the format of https://github.com/mui/material-ui/releases.
- Change the packages names casing to be lowercase if applicable
-
Update the root
/package.json
's version -
Run
pnpm release:version
. Keep the package versions of stable public packages the same as the rootpackage.json
version. -
Open PR with changes and wait for review and green CI
-
Merge PR once CI is green and it has been approved
- Checkout the last version of the release branch
pnpm install && pnpm release:build
(make sure you have the latest dependencies installed, and build the packages)pnpm release:publish
(release the versions on npm, you need your 2FA device)pnpm release:tag
(push the newly created tag)
pnpm docs:deploy
to deploy the documentation (it lives at https://material-ui.netlify.app/) with the latest changes.
Force push if necessary.
Follow the instructions in https://mui-org.notion.site/Releases-7490ef9581b4447ebdbf86b13164272d.
Sometimes it is necessary to deploy the selected commit(s) without deploying all the changes that have been merged into the main branch since the previous release (for example publishing a blog post or releasing urgent docs updates).
To do so, follow these steps:
-
Add the
material-ui-docs
remote if you haven't done this already:git remote add material-ui-docs https://github.com/mui/material-ui-docs.git
-
Fetch the latest changes from the
material-ui-docs
remote:git fetch material-ui-docs latest
-
Switch to the
latest
branch frommaterial-ui-docs
remote:git switch --detach material-ui-docs/latest
-
Cherry-pick the commit(s) that you want to include in the new deployment:
git cherry-pick <commit>
It will commit the changes if there are no conflicts.
In case of conflicts you will need to resolve them and commit the changes manually.
If this command fails with the message 'bad revision', it means that the commit doesn't exist on your local repository. The commit might have been created on a remote branch, probably when merging into
master
ornext
. In this case, you'll have to fetch the latest changes of the corresponding remote branch and then try again. -
Push the changes to the
material-ui-docs
remote:git push material-ui-docs HEAD:latest
-
Switch from detached
HEAD
back to your last checked out branch:git checkout -