前言:最近在写node后台,使用了egg,不了解框架的运行过程,更多的是在搬砖配置,心里没底!
今天翻出源代码,在此记录一下
启动命令行:egg-bin dev
为了看清运行过程,使用node调试:
进入项目运行 node --inspect-brk=6666 ./node_modules/egg-bin/bin/egg-bin.js dev 代码如下
// egg-bin/bin/egg-bin.js
const Command = require('..');new Command().start();复制代码
require('..')引入模块egg-bin/index.js EggBin
'use strict';
const path = require('path');
const Command = require('./lib/command');
class EggBin extends Command {
constructor(rawArgv) {
super(rawArgv);
this.usage = 'Usage: egg-bin [command] [options]';
this.load(path.join(__dirname, 'lib/cmd'));
}
}
module.exports = exports = EggBin;
exports.Command = Command;
exports.CovCommand = require('./lib/cmd/cov');
exports.DevCommand = require('./lib/cmd/dev');
exports.TestCommand = require('./lib/cmd/test');
exports.DebugCommand = require('./lib/cmd/debug');
exports.PkgfilesCommand = require('./lib/cmd/pkgfiles');复制代码
查看代码 EggBin extends Command, Command继承Common-bin
接下来创建对象new Command().start();,先初始化顶级父类CommonBin,获取命令行参数dev
创建Map集合
class CommonBin {
constructor(rawArgv) {
this.rawArgv = rawArgv || process.argv.slice(2);
this.yargs = yargs(this.rawArgv);
this.parserOptions = {
execArgv: false,
remov