Automated JavaScript project management.
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 will be ran in all environments (node, browser, webworker, electron-main and electron-renderer). To run node specific tests a file named test/node.js
should be used to require all node test files and the same thing for the other environments with a file named test/browser.js
.
Your package.json
should have the following entries and should pass aegir lint-package-json
.
"main": "src/index.js",
"files": [
"src",
"dist"
],
"scripts": {
"lint": "aegir lint",
"release": "aegir release",
"build": "aegir build",
"test": "aegir test",
"test:node": "aegir test --target node",
"test:browser": "aegir test --target browser"
}
Run aegir --help
Usage: aegir <command> [options]
Commands:
aegir build Builds a browser bundle and TS type declarations from the `src` folder.
aegir check Check project
aegir docs Generate documentation from TS type declarations.
aegir lint Lint all project files
aegir release Release your code onto the world
aegir test-dependant [repo] Run the tests of an module that depends on this module to see if the current changes have caused a regression
aegir test Test your code in different environments
aegir ts Typescript command with presets for specific tasks.
aegir dependency-check [input...] Run `dependency-check` cli with aegir defaults. [aliases: dep-check, dep]
aegir lint-package-json Lint package.json with aegir defaults. [aliases: lint-package, lpj]
aegir completion generate completion script
Global Options:
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
-d, --debug Show debug output. [boolean] [default: false]
--ts-repo Enable support for Typescript repos. [boolean] [default: false]
Examples:
aegir build Runs the build command to bundle JS code for the browser.
npx aegir build Can be used with `npx` to use a local version
aegir test -t webworker -- --browser firefox If the command supports `--` can be used to forward options to the underlying tool.
npm test -- -- --browser firefox If `npm test` translates to `aegir test -t browser` and you want to forward options you need to use `-- --` instead.
Use `aegir <command> --help` to learn more about each command.
Aegir can be fully configured using a config file named .aegir.js
or the package.json using the property aegir
.
// file: .aegir.js
'use strict'
/** @type {import('aegir').PartialOptions} */
module.exports = {
tsRepo: true,
release: {
build: false
}
}
// file: package.json
"main": "src/index.js",
"files": [
"src",
"dist"
],
"scripts": {
"lint": "aegir lint",
"release": "aegir release",
"build": "aegir build",
"test": "aegir test",
"test:node": "aegir test --target node",
"test:browser": "aegir test --target browser"
},
"aegir" : {
"tsRepo": false
}
You can find the complete default config here and the types here.
Check this template for Github Actions https://github.com/ipfs/aegir/blob/master/md/github-actions.md
In addition to running the tests aegir
also provides several helpers to be used by the tests.
Check the documentation
aegir ts --help
More documentation here
For native typescript add --ts-repo
to any command.
aegir build --ts-repo
aegir test --ts-repo
- Run linting
- Run type check
- Run tests
- Bump the version in
package.json
- Build everything
- Update contributors based on the git history
- Generate a changelog based on the git log
- Commit the version change &
CHANGELOG.md
- Create a git tag
- Run
git push
toorigin/master
- Publish a release to Github releases
- Generate documentation and push to Github Pages
- Publish to npm
aegir release --help
MIT