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, e.g. change
Material
tomaterial
-
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 (e.g. 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
-
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.
-
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 -