Release manager for npm, bower, component, PyPI, git tags, and any plugin you can write
Install the module via:
npm install foundry
foundry is not configured with any release libraries. Install a release library via
npm install foundry-release-bower # bowernpm install foundry-release-component # component.ionpm install foundry-release-git # gitnpm install foundry-release-npm # npmnpm install foundry-release-pypi # PyPI
Details about existing plugins and their documentation can be found under the Plugins heading.
For example purposes, we will create/release on a local-only
# Install a `git` foundry-release pluginnpm install foundry-release-git# Create git repomkdir foundry-examplecd foundry-examplegit initecho "Hello World" > README.mdgit add README.mdgit commit -m "Added documentation"# Run our release# `./node_modules/.bin` can be avoided by using `npm-run-script`#./node_modules/.bin/foundry release 0.1.0# [master c6ce921] Release 0.1.0# See the release commit and taggit log --decorate --oneline# c6ce921 (HEAD, tag: 0.1.0, master) Release 0.1.0# f0c25b3 Added documentation
foundry supports global installation since it loads plugins from its peer
node modules. This previous example can be done globally via:
# Install `foundry` and a `git` foundry-release pluginnpm install -g foundrynpm install -g foundry-release-git# Run our releasefoundry release 0.1.0
foundry provides a command line interface for releasing.
$ foundry --helpUsage: foundry [options] [command]Commands:release <version> Set version for package metadata and publish to registriesplugins List installed `foundry` pluginscompletion Get potential completions for a command. Looks for `COMP_CWORD`, `COMP_LINE`, `COMP_POINT`.Options:-h, --help output usage information--plugin-dir <directory> Directory to load plugins from. Should have same structure as `node_modules`-V, --version output the version number
Example releases are:
foundry release 0.1.0foundry release 0.3.0foundry release 1.0.0
Commands that automatically increment semver are planned (e.g.
foundry release major,
foundry release minor). See https://github.com/twolfson/foundry/issues/16 for more information.
When a release occurs, the following steps are processed:
- Update files, update package files with the new version and changes (e.g. update
package.json, add to
- Commit, persist any changes to a version control system (e.g.
git commit && git tag)
- Register, if the package is new (semver ===
0.1.0), then register it to its repository (e.g.
python setup.py register)
- Publish, release changes to package's repostiroy manager (e.g.
foundry plugins contain the
foundry-plugin keyword and adhered to the
foundry release plugin specification:
Existing plugins are:
- foundry-release-bower, manages
- foundry-release-component, manages
- foundry-release-git, runs
git commitupon release
- foundry-release-npm, manages
npm publishupon release
- foundry-release-pypi, manages
setup.pyand registers/zips/gzips package upon release
- More plugins can be found at https://www.npmjs.org/browse/keyword/foundry-release
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via grunt and test via
As of Dec 07 2013, Todd Wolfson has released this repository and its contents to the public domain.
It has been released under the UNLICENSE.