AEgir
Automated JavaScript project management.
Project Structure
The project structure when using this is quite strict, to ease
replication and configuration overhead.
All source code should be placed under src
, with the main entry
point being src/index.js
.
All test files should be placed under test
. Individual test files should end in .spec.js
and setup files for the node and the browser should be test/node.js
and test/browser.js
respectively.
Your package.json
should have the following entries.
"main": "lib/index.js",
"jsnext:main": "src/index.js",
"scripts": {
"lint": "aegir-lint",
"release": "aegir-release",
"build": "aegir-build",
"test": "aegir-test",
"test:node": "aegir-test node",
"test:browser": "aegir-test browser",
"coverage": "aegir-coverage",
"coverage-publish": "aegir-coverage publish"
}
You should also add babel-runtime
to your dependencies
as it is required by the babelified version in lib
.
Tasks
Linting
Linting uses eslint and standard with some custom rules to
enforce some more strictness.
You can run it using
$ aegir-lint
$ gulp lint
Testing
You can run it using
$ aegir-test
$ gulp test
There are also browser and node specific tasks
$ aegir-test node
$ gulp test:node
$ aegir-test browser
$ gulp test:browser
Coverage
You can run it using
$ aegir-coverage
$ gulp coverage
To auto publish coverage reports from Travis to Coveralls add this to
your .travis.yml
file. For more details see node-coveralls.
script:
- npm run coverage
after_success:
- npm run coverage-publish
Building
This will build a browser ready version into dist
, so after publishing the results will be available under
https://npmcdn.com/<module-name>/dist/index.js
https://npmcdn.com/<module-name>/dist/index.min.js
There is also an ES5 build that will be placed in lib
that will be required by default from consumers using require
.
You can run it using
$ aegir-build
$ gulp build
Releasing
- Run linting
- Run tests
- Build everything
- Bump the version in
package.json
- Commit the version change
- Create a git tag
- Run
git push
to upstream/master
$ gulp release major
$ aegir-release major
$ gulp release minor
$ aegir-release minor
$ gulp release
$ aegir-release
Other Notes
There is a badge.
[![aegir](https://img.shields.io/badge/follows-aegir-blue.svg?style=flat-square)](https://github.com/dignifiedquire/aegir)
License
MIT