egg-bin
egg developer tool
Install
$ npm i egg-bin --save-dev
Usage
Add egg-bin
to package.json
scripts:
{
"devDependencies": {
"egg-bin": "2"
},
"scripts": {
"dev": "egg-bin dev",
"debug": "egg-bin debug",
"test": "egg-bin test",
"cov": "egg-bin cov",
"lint": "eslint .",
"ci": "npm run lint && npm run cov"
}
}
Command
All the commands support these specific v8 options:
--debug
--inspect
--harmony*
--es_staging
$ egg-bin [command] --debug --es_staging
dev
Start dev cluster on local
env, it will start a master, an agent and a worker.
$ egg-bin dev
options
--eggPath
egg web framework root path.No default value, must supply.--baseDir
application's root path.default to process.cwd()
.--port
server port.default to 7001
.--cluster
worker process number.default to 1
.--sticky
start a sticky cluster server.default to false
.
debug
Debug egg app with V8 Inspector Integration.
$ egg-bin debug
test
Using mocha with co-mocha to run test.
power-assert is the default assert
library, and intelli-espower-loader will be auto required.
You can set TESTS
env to set the tests directory, it support glob grammar.
TESTS=test/a.test.js egg-bin test
And the reporter can set by the TEST_REPORTER
env, default is spec
.
TEST_REPORTER=doc egg-bin test
The test timeout can set by TEST_TIMEOUT
env, default is 30000
ms.
TEST_TIMEOUT=2000 egg-bin test
cov
Using istanbul to run code coverage, it support all test params above.
Coverage reporter will output text-summary, json and lcov.
excludes
You can set COV_EXCLUDES
env to add dir ignore coverage.
$ COV_EXCLUDES="app/plugins/c*,app/autocreate/**" egg-bin cov
auto require test/.setup.js
If test/.setup.js
file exists, it will be auto require on test
and cov
command.
test
├── .setup.js
└── foo.test.js
Custom egg-bin for your team
You maybe need a custom egg-bin to implement more custom features
if your team has develop a framework base on egg.
Now you can implement a Program sub class,
and Command sub class to do that.
Or you can just override the exists command.
Example: Add nsp for security scan
nsp has provide a useful security scan feature.
This example will show you how to add a new NspCommand
and MyProgram
to create a new egg-bin
tool.
const Program = require('egg-bin').Program;
class MyProgram extends Program {
constructor() {
super();
this.version = require('../package.json').version;
this.addCommand('nsp', path.join(__dirname, 'NspCommand.js'));
}
}
module.exports = MyProgram;
const Command = require('egg-bin').Command;
class NspCommand extends Command {
* run(cwd, args) {
console.log('run nsp check at %s with %j', cwd, args);
}
help() {
return 'nsp check';
}
}
module.exports = NspCommand;
#!/usr/bin/env node
'use strict';
const run = require('egg-bin').run;
run(require('../lib/my_program'));
Run result
$ my-egg-bin nsp
run nsp check at /foo/bar with []
License
MIT