Adonis Ignitor 🔥
This repo contains all the code for bootstraping AdonisJs applications. It removes all the boilerplate code from your AdonisJs apps to keep them clean 🛁
What it does?
This repo performs following actions in order.
- Load application
package.json
file. - Register the
Helpers
provider, since it needs to be ready before registering any other providers. - Load hooks file from
start/hooks.js
( if exists ). - Register all the providers from
start/app.js
file. - Boot all registered providers.
- Define aliases for providers.
- Setup global exception handler by loading
app/Exceptions/Handler.js
file (if any). - Loads files to be preloaded.
- Registers
ace
commands if process is started by the ace
command line or someone manually instructs ignitor to load commands.
Node/OS Target
This repo/branch is supposed to run fine on all major OS platforms and targets Node.js >=7.0
Development
Great! If you are planning to contribute to this module, make sure to adhere to following conventions, since a consistent code-base is always joy to work with.
Run the following command to see list of available npm scripts.
npm run
Tests & Linting
- Lint your code using standardJs. Run
npm run lint
command to check if there are any linting errors. - Make sure you write tests for all the changes/bug fixes.
- Also you can write regression tests, which shows that something is failing but doesn't breaks the build. Which is actually a nice way to show that something fails. Regression tests are written using
test.failing()
method. - Make sure all the tests are passing on
travis
and appveyor
.
General Practices
Since Es6 is in, you should strive to use latest features. For example:
- Use
Spread
over arguments
keyword. - Never use
bind
or call
. After calling these methods, we cannot guarantee the scope of any methods and in AdonisJs codebase we do not override the methods scope. - Make sure to write proper docblock.
Issues & PR
It is always helpful if we try to follow certain practices when creating issues or PR's, since it will save everyone's time.
- Always try creating regression tests when you find a bug (if possible).
- Share some context on what you are trying to do, with enough code to reproduce the issue.
- For general questions, please create a forum thread.
- When creating a PR for a feature, make sure to create a parallel PR for docs too.
Regression Tests
Regression tests are tests, which shows how a piece of code fails under certain circumstance, but the beauty is even after the failure, the test suite will never fail. Actually is a nice way to notify about bugs, but making sure everything is green.
The regression tests are created using
test.failing('2 + 2 is always 4, but add method returns 6', (assert) => {
assert.true(add(2, 2), 4)
})
Now since the add
method has a bug, it will return 6
instead of 4
. But the build will pass.