Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

egg-bin

Package Overview
Dependencies
Maintainers
13
Versions
178
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

egg-bin

egg developer tool

  • 5.15.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
19K
increased by0.09%
Maintainers
13
Weekly downloads
 
Created
Source

egg-bin

NPM version build status Test coverage Known Vulnerabilities npm download

egg developer tool, extends common-bin.


Install

npm i egg-bin --save-dev

Usage

Add egg-bin to package.json scripts:

{
  "scripts": {
    "dev": "egg-bin dev",
    "debug": "egg-bin debug",
    "test-local": "egg-bin test",
    "test": "npm run lint -- --fix && npm run test-local",
    "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

if process.env.NODE_DEBUG_OPTION is provided (WebStorm etc), will use it as debug options.

dev

Start dev cluster on local env, it will start a master, an agent and a worker.

egg-bin dev
dev options
  • --framework egg web framework root path.
  • --baseDir application's root path, default to process.cwd().
  • --port server port, default to 7001.
  • --workers worker process number, default to 1 worker at local mode.
  • --sticky start a sticky cluster server, default to false.
  • --typescript / --ts enable typescript support, default to false. Also support read from package.json's egg.typescript.
  • --declarations / --dts enable egg-ts-helper support, default to false. Also support read from package.json's egg.declarations.
  • --require will add to execArgv, support multiple. Also support read from package.json's egg.require

debug

Debug egg app with V8 Inspector Integration.

automatically detect the protocol, use the new inspector when the targeted runtime >=7.0.0 .

if running without VSCode or WebStorm, we will use inspector-proxy to proxy worker debug, so you don't need to worry about reload.

egg-bin debug --debug-port=9229 --proxy=9999
debug options
  • all egg-bin dev options is accepted.
  • --proxy=9999 worker debug proxy port.

test

Using mocha to run test.

egg-bin test [files] [options]
  • files is optional, default to test/**/*.test.js
  • test/fixtures, test/node_modules is 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.js
test options

You can pass any mocha argv.

  • --require require the given module
  • --grep only run tests matching <pattern>
  • --timeout milliseconds, default to 60000
  • --full-trace display the full stack trace, default to false.
  • --typescript / --ts enable typescript support, default to false.
  • --changed / -c only test changed test files(test files means files that match ${pwd}/test/**/*.test.(js|ts))
  • --dry-run / -d whether dry-run the test command, just show the command
  • --parallel enable mocha parallel mode, default to false.
  • --auto-agent auto start agent in mocha master agent.
  • --jobs number of jobs to run in parallel, default to os.cpus().length - 1.
  • --mochawesome enable mochawesome reporter, default to false.
  • see more at https://mochajs.org/#usage
test 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 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 60000 ms.

TEST_TIMEOUT=2000 egg-bin test

node-test

Using node:test to run test.

egg-bin node-test [files] [options]
  • files is optional, default to test/**/*.test.js
  • test/fixtures, test/node_modules is always exclude.
node-test options
  • --test-only configures the test runner to only execute top level tests that have the only option set

TBD: TypeScript not support yet

node-test 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 egg-bin node-test

And the reporter can set by the TEST_REPORTER env, default is tap.

TEST_REPORTER=doc egg-bin node-test

The test timeout can set by TEST_TIMEOUT env, default is 60000 ms.

TEST_TIMEOUT=2000 egg-bin node-test

cov

Using mocha and [c8] to run code coverage, it support all test params above.

Coverage reporter will output text-summary, json and lcov.

cov options

You can pass any mocha argv.

  • -x add dir ignore coverage, support multiple argv

  • --prerequire prerequire files for coverage instrument, you can use this options if load files slowly when call mm.app or mm.cluster

  • --typescript / --ts enable typescript support, default to false, if true, will auto add .ts extension and ignore typings and d.ts.

  • --c8 c8 instruments passthrough. you can use this to overwrite egg-bin's default c8 instruments and add additional ones.

    • egg-bin have some default instruments passed to c8 like -r and --temp-directory
    • egg-bin cov --c8="-r teamcity -r text" --c8-report=true
  • --c8-report use c8 to report coverage, c8 uses native V8 coverage, default to false.

  • also support all test params above.

cov environment

You can set COV_EXCLUDES env to add dir ignore coverage.

COV_EXCLUDES="app/plugins/c*,app/autocreate/**" egg-bin cov

node-test-cov

Using node:test and [c8] to run code coverage, it support all test params above.

Coverage reporter will output text-summary, json and lcov.

node-test-cov options

You can pass any node:test argv.

  • -x add dir ignore coverage, support multiple argv

  • --prerequire prerequire files for coverage instrument, you can use this options if load files slowly when call mm.app or mm.cluster

  • --typescript / --ts enable typescript support, default to false, if true, will auto add .ts extension and ignore typings and d.ts.

  • --c8 c8 instruments passthrough. you can use this to overwrite egg-bin's default c8 instruments and add additional ones.

    • egg-bin have some default instruments passed to c8 like -r and --temp-directory
    • egg-bin cov --c8="-r teamcity -r text" --c8-report=true
  • --c8-report use c8 to report coverage, c8 uses native V8 coverage, default to false.

  • also support all node-test params above.

node-test-cov environment

You can set COV_EXCLUDES env to add dir ignore coverage.

COV_EXCLUDES="app/plugins/c*,app/autocreate/**" egg-bin node-test-cov

pkgfiles

Generate pkg.files automatically before npm publish, see ypkgfiles for detail

egg-bin pkgfiles

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 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 egg-bin tool.

my-egg-bin
const EggBinCommand = require('egg-bin');

class MyEggBinCommand extends EggBinCommand {
  constructor(rawArgv) {
    super(rawArgv);
    this.usage = 'Usage: egg-bin [command] [options]';

    // load directory
    this.load(path.join(__dirname, 'lib/cmd'));
  }
}

module.exports = MyEggBinCommand;
NspCommand
const Command = require('egg-bin').Command;

class NspCommand extends Command {
  async run({ cwd, argv }) {
    console.log('run nsp check at %s with %j', cwd, argv);
  }

  description() {
    return 'nsp check';
  }
}

module.exports = NspCommand;
my-egg-bin.js
#!/usr/bin/env node

'use strict';
const Command = require('..');
new Command().start();
Run result
$ my-egg-bin nsp

run nsp check at /foo/bar with {}

License

MIT

Contributors


fengmk2


atian25


popomore


whxaxes


semantic-release-bot


dead-horse


killagu


hyj1991


mansonchor


ngot


waitingsong


onlylovermb


snyk-bot


BiosSun


luckydrq


stormslowly


snapre


ZYSzys


angleshe


ahungrynoob


yinseny


okoala

This project follows the git-contributor spec, auto updated at Wed Jan 18 2023 00:01:48 GMT+0800.

FAQs

Package last updated on 20 Feb 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc