Package Exports
- aegir/fixtures
- aegir/gulp
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (aegir) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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": "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"
}Stack Requirements
To bring you its many benefits, aegir requires
Tasks
Linting
Linting uses eslint and standard with some custom rules to enforce some more strictness.
You can run it using
$ aegir-lint
# or as gulp task
$ gulp lintTesting
You can run it using
$ aegir-test
# or as gulp task
$ gulp testThere are also browser and node specific tasks
$ aegir-test node
$ gulp test:node
$ aegir-test browser
$ gulp test:browserIf the needed environment variables are set, tests are also run on [Sauce Labs]. You will need
$SAUCE=trueSAUCE_USERNAME=<username>SAUCE_ACCESS_KEY=<access key>
Fixtures
Loading fixture files in node and the browser can be painful, that's why aegir provides
a method to do this. For it to work you have to put your fixtures in the folder test/fixtures, and then
// test/awesome.spec.js
const loadFixture = require('aegir/fixtures')
const myFixture = loadFixture(__dirname, 'fixtures/largefixture')If you write a module like interface-ipfs-core which is to be consumed by other modules tests you need to pass in a third parameter such that the server is able to serve the correct files.
For example
// awesome-tests module
const loadFixture = require('aegir/fixtures')
const myFixture = loadFixture(__dirname, 'fixtures/coolfixture', 'awesome-tests')// tests for module using the awesome-tests
require('awesome-tests')// .aegir.js file in the module using the awesome-tests module
'use strict'
module.exports = {
karma: {
files: [{
pattern: 'node_modules/awesome-tests/test/fixtures/**/*',
watched: false,
served: true,
included: false
}]
}
}Coverage
You can run it using
$ aegir-coverage
# or as gulp task
$ gulp coverageTo 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-publishBuilding
This will build a browser ready version into dist, so after publishing the results will be available under
https://unpkg.com/<module-name>/dist/index.js
https://unpkg.com/<module-name>/dist/index.min.jsYou can run it using
$ aegir-build
# or as gulp task
$ gulp buildSpecifying a custom entry file for Webpack
By default, aegir uses src/index.js as the entry file for Webpack. You can customize which file to use as the entry point by specifying entry field in your user configuration file. To do this, create .aegir.js file in your project's root diretory and add point the entry field to the file Webpack should use as the entry:
module.exports = {
entry: "src/browser-index.js",
}Webpack will use the specified file as the entry point and output it to dist/<filename>, eg. dist/browser-index.js.
If .aegir.js file is not present in the project, webpack will use src/index.js as the default entry file.
Releasing
- Run linting
- Run tests
- Build everything
- Bump the version in
package.json - Generate a changelog based on the git log
- Commit the version change &
CHANGELOG.md - Create a git tag
- Run
git pushtoupstream/master - Publish a release to Github releases (if
GH_TOKENis available) - Publish to npm
# Major release
$ gulp release --type major
$ aegir-release --type major
# Minor relase
$ gulp release --type minor
$ aegir-release --type minor
# Patch release
$ gulp release
$ aegir-releaseYou can also specify a --env for a release, which can be either
'node', 'browser' or 'no-build'.
$ aegir-release --env node
$ gulp release --env nodeYou can generate a changelog for all versions by using --first
$ aegir-relase --firstYou can skip all changelog generation and the github release by passing
in --no-changelog.
If you want documentation generation you can pass --docs to the release task to build documentation and publish it to the gh-pages branch.
Documentation
You can use aegir-docs to generate documentation. This uses documentation.js with the theme [https://github.com/dignifiedquire/clean-documentation-theme].
To publish the documentation automatically to the gh-pages branch you can run
$ aegir-docs --publishOther Notes
There is a badge.
[](https://github.com/dignifiedquire/aegir)License
MIT