All Projects → eggjs → Egg Bin

eggjs / Egg Bin

Licence: mit
egg developer tool

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to Egg Bin

Egg Authz
egg-authz is an authorization middleware for Egg.js based on Casbin
Stars: ✭ 50 (-69.7%)
Mutual labels:  egg
Egg Passport
passport plugin for egg
Stars: ✭ 98 (-40.61%)
Mutual labels:  egg
Egg View Vue
vue view plugin for egg
Stars: ✭ 136 (-17.58%)
Mutual labels:  egg
Egg View React Ssr
Egg React Server Side Render (SSR) Plugin
Stars: ✭ 55 (-66.67%)
Mutual labels:  egg
Nuxt Egg
Nuxt.js + Egg FrameWork
Stars: ✭ 86 (-47.88%)
Mutual labels:  egg
Blog
天猪部落阁 http://atian25.github.io
Stars: ✭ 1,527 (+825.45%)
Mutual labels:  egg
Egg View
Stars: ✭ 35 (-78.79%)
Mutual labels:  egg
Egg Init
Init egg app helper tools
Stars: ✭ 145 (-12.12%)
Mutual labels:  egg
Egg Vue Webpack Boilerplate
Egg Vue Server Side Render (SSR) / Client Side Render (CSR)
Stars: ✭ 1,302 (+689.09%)
Mutual labels:  egg
Egg Logger
Egg logger
Stars: ✭ 127 (-23.03%)
Mutual labels:  egg
Zaneperfor
前端性能监控系统,消息队列,高可用,集群等相关架构
Stars: ✭ 1,085 (+557.58%)
Mutual labels:  egg
Egg Schedule
Schedule plugin for egg
Stars: ✭ 76 (-53.94%)
Mutual labels:  egg
Egg Router Plus
The missing router feature for eggjs
Stars: ✭ 117 (-29.09%)
Mutual labels:  egg
Egg View Ejs
egg view plugin for ejs.
Stars: ✭ 54 (-67.27%)
Mutual labels:  egg
Egg Mock
Mock library for egg testing.
Stars: ✭ 137 (-16.97%)
Mutual labels:  egg
Egg Cancan
cancancan like authorization plugin for Egg.js
Stars: ✭ 47 (-71.52%)
Mutual labels:  egg
Egg Cnode
CNode 社区 Egg 版本
Stars: ✭ 1,456 (+782.42%)
Mutual labels:  egg
Nodeplatform Eggjs
基于egg.js编写的node平台,演示地址不要乱搞啊
Stars: ✭ 155 (-6.06%)
Mutual labels:  egg
Egg Multipart
multipart plugin for egg
Stars: ✭ 145 (-12.12%)
Mutual labels:  egg
Examples
Store all egg examples in one place
Stars: ✭ 1,668 (+910.91%)
Mutual labels:  egg

egg-bin

NPM version build status Test coverage David deps 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 .",
    "pkgfiles": "egg-bin pkgfiles",
    "autod": "egg-bin autod",
    "ci": "npm run lint && npm run autod -- --check && npm run pkgfiles -- --check && 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
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
options
  • all egg-bin dev options is accepted.
  • --proxy=9999 worker debug proxy port.

test

Using mocha with co-mocha to run test.

power-assert is the default assert library, and intelli-espower-loader will be auto required.

$ 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

options

You can pass any mocha argv.

  • --require require the given module
  • --grep only run tests matching
  • --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
  • 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 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

cov

Using [nyc] to run code coverage, it support all test params above.

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

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.

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

    if you want to add addtional nyc reporters, you need to use this rather than add reporter key in .nycrc because:

    • when same key exists in .nycrc and cmd instruments, nyc prefers instrument.
    • egg-bin have some default instruments passed to nyc like -r and --temp-directory
    • egg-bin cov --nyc="-r teamcity -r text"
  • 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/**" egg-bin cov

pkgfiles

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

$ egg-bin pkgfiles

autod

Generate pkg.dependencies and pkg.devDependencies automatically, see autod for detail

$ egg-bin autod

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 {
  * 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].