A Builder archetype for Formidable static React landers.
- In the root, you need to create a
./static-routes.js
file that exports an array of all the routes your heart desires.
module.exports = [
"/",
"/about",
"/pineapples"
];
To release a project controlled by this archetype (e.g., victory-docs
),
use the following guide:
IMPORTANT - NPM: To correctly run preversion
your first step is to make
sure that you have a very modern npm
binary:
$ npm install -g npm
Built files in build/
should not be committed during development or PRs.
Instead we only build and commit them for published, tagged releases. So
the basic workflow is:
# Make sure you have a clean, up-to-date `master`
$ git pull
$ git status # (should be no changes)
# Choose a semantic update for the new version.
# If you're unsure, read about semantic versioning at http://semver.org/
$ npm version major|minor|patch -m "Version %s - INSERT_REASONS"
# Push the `build/` directory, version commits, and tag:
$ git push --follow-tags
# And finally publish to `npm`!
$ npm publish
And you've published!
For a reliable systems of releases, the landers should aim for versioning along these lines:
- Patch: Typos, missing assets, broken styles, very minor copyedits.
- Minor: Add a new blog post, change styles.
- Major: Rearchitect how the lander works, remove pages, or something else huge.
For additional information on the underlying NPM technologies and approaches, please review:
npm version
: Runs verification, buildsbuild/
viascripts
commands.npm publish
: Uploads to NPM.
This section applies to the archetype itself (builder-docs-archetype
).
You can read the Builder docs for the full story. Here is an overview of the Builder three-way dependency scheme:
package.json:dependencies
: Production dependencies for the archetype installed in a project.dev/package.json:dependencies
: Development dependencies for the archetype installed in a project.package.json:devDependencies
: The development dependencies used internally for the this archetype during development (self tests, checks, etc.) that are not part of the overall archetype outside workflow.
Run npm run builder:check
For tagged official releases only of the archetype, make sure to:
- Bump
package.json
version - Generate a new
ARCHETYPE-dev
package.json
- Add to git, tag, and publish
$ vim package.json # Bump version
$ vim CHANGELOG.md # Add version notes
$ builder-support gen-dev # Generate `dev/*` files
$ npm run builder:check # Last check!
$ git add package.json dev
$ git commit -m "Version bump"
$ git tag -a "vNUMBER" -m "vNUMBER - INSERT_REASONS" # Create tag
$ git push --follow-tags
$ npm publish # Publish main project
$ cd dev && npm publish # Publish dev project