nodinx-bin v3.3.9
nodinx-bin
egg developer tool, extends common-bin.
Install
$ npm i nodinx-bin --save-devUsage
Add nodinx-bin to package.json scripts:
{
"scripts": {
"dev": "nodinx-bin dev",
"debug": "nodinx-bin debug",
"test-local": "nodinx-bin test",
"test": "npm run lint -- --fix && npm run test-local",
"cov": "nodinx-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
$ nodinx-bin [command] --debug --es_stagingdev
Start dev cluster on local env, it will start a master, an agent and a worker.
$ nodinx-bin devoptions
--frameworkegg web framework root path.--baseDirapplication's root path, default toprocess.cwd().--portserver port, default to7001.--clusterworker process number, skip this argvs will start only1worker, provide this without value will startcpucount worker.--stickystart a sticky cluster server, default tofalse.
debug
Debug egg app with V8 Inspector Integration.
$ nodinx-bin debugtest
Using mocha with co-mocha to run test.
power-assert is the default assert library, and intelli-espower-loader will be auto required.
$ nodinx-bin test [files] [options]filesis optional, default totest/**/*.test.jstest/fixtures,test/node_modulesis always exclude.
auto require test/.setup.js
If test/.setup.js file exists, it will be auto require as the first test file.
test
├── .setup.js
└── foo.test.jsoptions
You can pass any mocha argv.
--requirerequire the given module--greponly run tests matching--timeoutmilliseconds, default to 30000- see more at https://mochajs.org/#usage
environment
Environment is also support, will use it if options not provide.
You can set TESTS env to set the tests directory, it support glob grammar.
TESTS=test/a.test.js nodinx-bin testAnd the reporter can set by the TEST_REPORTER env, default is spec.
TEST_REPORTER=doc nodinx-bin testThe test timeout can set by TEST_TIMEOUT env, default is 30000 ms.
TEST_TIMEOUT=2000 nodinx-bin testcov
Using istanbul to run code coverage, it support all test params above.
Coverage reporter will output text-summary, json and lcov.
NOTE: cov is replaced with test at win32 system.
options
You can pass any mocha argv.
-xadd dir ignore coverage, support multiple argv- also support all test params above.
environment
You can set COV_EXCLUDES env to add dir ignore coverage.
$ COV_EXCLUDES="app/plugins/c*,app/autocreate/**" nodinx-bin covpkgfiles
Generate pkg.files automatically before npm publish, see ypkgfiles for detail
$ nodinx-bin pkgfilesCustom nodinx-bin for your team
You maybe need a custom nodinx-bin to implement more custom features if your team has develop a framework base on egg.
Now you can implement a Command sub class to do that. Or you can just override the exists command.
See more at common-bin.
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 to create a new nodinx-bin tool.
- Full demo: my-nodinx-bin
my-nodinx-bin
const EggBinCommand = require('nodinx-bin');
class MyEggBinCommand extends EggBinCommand {
constructor(rawArgv) {
super(rawArgv);
this.usage = 'Usage: nodinx-bin [command] [options]';
// load directory
this.load(path.join(__dirname, 'lib/cmd'));
}
}
module.exports = MyEggBinCommand;NspCommand
const Command = require('nodinx-bin').Command;
class NspCommand extends Command {
* run({ cwd, argv }) {
console.log('run nsp check at %s with %j', cwd, argv);
}
description() {
return 'nsp check';
}
}
module.exports = NspCommand;my-nodinx-bin.js
#!/usr/bin/env node
'use strict';
const Command = require('..');
new Command().start();Run result
$ my-nodinx-bin nsp
run nsp check at /foo/bar with {}