pattern-library
pattern-library copied to clipboard
Improve the release script
Currently, npm run release
runs into a number of stumbling blocks, as follows:
- Commands
lerna
andcross-env
apparently need to be globally installed to be found by the script. This should not be necessary, and currently leads to silent failure of the release process. - As it stands, it is not possible to enter the required 6-digit OTP token to satisfy npm two-factor authentication in the
lerna publish
sub-step. - Releasing is restricted to the release branch, but no upfront check to determine such branch exists both locally and remotely is performed, with informative error messages on what to do and why this restriction is in-place.
- In case a release is botched for whatever reason, a subsequent attempt may fail due to the git tags issued by the
lerna version
sub-step already existing. The release script should force these git tags even if they exist, to facilitate robust re-releasing in the face of failures. - The use of
prepublishOnly
andpostpublish
scripts in each Pattern-Library component's package.json is very brittle and has repeatedly led to failure, because these scripts edit the package.json file on disk but are not done transactionally, i.e. it is not the case that either both or none of these scripts are guaranteed to be executed. A better release process must not edit package.jsons.
Make the release script robust by removing the above stumbling blocks.
See https://github.com/lerna/lerna/tree/main/libs/commands/publish#--otp for ways of submitting an OTP token to lerna.
See https://github.com/lerna/lerna/tree/main/libs/commands/version#--force-git-tag for ways to force git tags.