bootstrap-automatic-releases
v5.3.5
Published
The most popular front-end framework for developing responsive, mobile first projects on the web.
Maintainers
Readme
Set up
This repository is a copy of the Bootstrap repository with a few changes to make it work with this new repository:
Forked Bootstrap
mainbranch from https://github.com/twbs/bootstrap/commit/0cbfe13adf669ad39ae9d8e873c2ad59befd3a3aChanged
if: github.repository == 'twbs/bootstrap'toif: github.repository == 'julien-deramond/bootstrap-automatic-releases'(3e17b6e)Removed
.github/dependabot.ymlfile to avoid having Dependabot alertsFixed CSpell action by adding "deramond" to the dictionary (45bd8d9)
Disabled BrowserStack workflow because it requires a BrowserStack account. However, it should be pretty easy to make it work afterward when the automatic release is set up in Bootstrap. (77eb394)
Configured Netlify to deploy the main branch at https://bootstrap-automatic-releases.netlify.app/
Changed package name for this repository in
package.jsonto test out the automatic release: usedbootstrap-automatic-releases- This also required changing the name here:
diff --git a/build/zip-examples.mjs b/build/zip-examples.mjs index e5e39be..df254dc 100644 --- a/build/zip-examples.mjs +++ b/build/zip-examples.mjs @@ -18,7 +18,7 @@ const pkgJson = path.join(__dirname, '../package.json') const pkg = JSON.parse(await fs.readFile(pkgJson, 'utf8')) const versionShort = pkg.config.version_short -const distFolder = `bootstrap-${pkg.version}-examples` +const distFolder = `bootstrap-automatic-releases-${pkg.version}-examples` const rootDocsDir = '_site' const docsDir = `${rootDocsDir}/docs/${versionShort}/` diff --git a/package.json b/package.json index 7c3d4b4..90e3715 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "release": "npm-run-all dist release-sri docs-build release-zip*", "release-sri": "node build/generate-sri.mjs", "release-version": "node build/change-version.mjs", - "release-zip": "cross-env-shell \"rm -rf bootstrap-$npm_package_version-dist bootstrap-$npm_package_version-dist.zip && cp -r dist/ bootstrap-$npm_package_version-dist && zip -qr9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && rm -rf bootstrap-$npm_package_version-dist\"", + "release-zip": "cross-env-shell \"rm -rf bootstrap-automatic-releases-$npm_package_version-dist bootstrap-automatic-releases-$npm_package_version-dist.zip && cp -r dist/ bootstrap-automatic-releases-$npm_package_version-dist && zip -qr9 bootstrap-automatic-releases-$npm_package_version-dist.zip bootstrap-automatic-releases-$npm_package_version-dist && rm -rf bootstrap-automatic-releases-$npm_package_version-dist\"", "release-zip-examples": "node build/zip-examples.mjs", "dist": "npm-run-all --aggregate-output --parallel css js", "test": "npm-run-all lint dist js-test docs-build docs-lint",
Changes
Here are the changes that could be made to the original Bootstrap repository to have automatic releases.
Get rid of the dist directory
- Remove
distdirectory and add it to.gitignore(c0797cb) - Add eslint ignore rule
eslint-disable-line import/no-unresolvedto/js/tests/integration/bundle.jsto fixnpm run lintwithout having to build the library (6d959ab) - Change
npm run docsto add an extranpm run distcommand so that/docs/5.3/customize/css-variablescan be built (it embeds the content of the dist CSS built file) (d8d05b0) - Adapt
.github/workflows/docs.ymlto usenpm run docsinstead of several sub-commands (8dacbe0) - Adapt BrowserStack workflow (not done here because it requires a BrowserStack account)
Prepare the releases
- New script
prepare-version.mjsthat takes 'patch', 'minor', or 'major' as an argument and prepares the main branch for the next release.- Changes the version in all files
- Rename the {version} directories (e.g. 5.3 -> 5.4, or 5.3 -> 6.0) for minor and major versions
- New npm scripts to prepare the main branch for the next release:
+ "prepare-patch": "node build/prepare-version.mjs patch", + "prepare-minor": "node build/prepare-version.mjs minor", + "prepare-major": "node build/prepare-version.mjs major",
Release
[!NOTE] This test was done by publishing this https://www.npmjs.com/package/bootstrap-automatic-releases package publicly. It will be deleted afterward.
[!WARNING] It would be possible to use GitHub Actions to publish the package to npm, but it would require a npm token. If the action is not set up correctly, the token could be exposed. Moreover, all the core team (with write access) is not currently allowed to publish to npm. Therefore, it would be better to use the manual process for now.
New scripts
publish-release: to run the release script, publish the package to npm, push the changes to the main branch, and create/push a new tagpublish-patch: to run thepublish-releasescript, and after that, publish the docs to thegh-pagesbranch toopublish-minor: to run thepublish-releasescript, and after that, publish the docs to thegh-pagesbranch toopublish-major: to run thepublish-releasescript, and after that, publish the docs to thegh-pagesbranch toobuild/publish-docs.mjs: to publish the docs to thegh-pagesbranch
How to publish a new release for a patch version
- Run
npm run publish-patchto publish a new patch version
How to publish a new release for a minor version
How to publish a new release for a major version
After the release
Prepare the main branch for the next release by running:
npm run prepare-patchfor a patch releasenpm run prepare-minorfor a minor releasenpm run prepare-majorfor a major release
This will execute the npm run release-version <version> <next-version>. For example, if the current version is 5.3.0, running npm run prepare-patch will execute npm run release-version 5.3.0 5.3.1.
