egg-bin
Version:
egg developer tool
124 lines • 9.12 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DevCommand = void 0;
const node_util_1 = require("node:util");
const node_path_1 = __importDefault(require("node:path"));
const artus_cli_1 = require("@artus-cli/artus-cli");
const utils_1 = __importDefault(require("@eggjs/utils"));
const detect_port_1 = __importDefault(require("detect-port"));
const base_1 = require("./base");
const debug = (0, node_util_1.debuglog)('egg-bin:dev');
let DevCommand = class DevCommand extends base_1.BaseCommand {
port;
workers;
framework;
sticky;
async run() {
debug('run dev: %o', this.ctx.args);
this.ctx.env.NODE_ENV = this.ctx.env.NODE_ENV ?? 'development';
this.ctx.env.EGG_MASTER_CLOSE_TIMEOUT = '1000';
const serverBin = node_path_1.default.join(__dirname, '../../scripts/start-cluster.js');
const eggStartOptions = await this.formatEggStartOptions();
const args = [JSON.stringify(eggStartOptions)];
const requires = await this.formatRequires();
const execArgv = [];
for (const r of requires) {
execArgv.push('--require');
execArgv.push(r);
}
await this.forkNode(serverBin, args, { execArgv });
}
async formatEggStartOptions() {
this.framework = utils_1.default.getFrameworkPath({
framework: this.framework,
baseDir: this.base,
});
if (!this.port) {
let configuredPort;
try {
const configuration = await utils_1.default.getConfig({
framework: this.framework,
baseDir: this.base,
env: 'local',
});
configuredPort = configuration?.cluster?.listen?.port;
}
catch (err) {
/** skip when failing to read the configuration */
debug('getConfig error: %s, framework: %o, baseDir: %o, env: local', err, this.framework, this.base);
}
if (configuredPort) {
this.port = configuredPort;
debug(`use port ${this.port} from configuration file`);
}
else {
const defaultPort = process.env.EGG_BIN_DEFAULT_PORT ?? 7001;
debug('detect available port');
this.port = await (0, detect_port_1.default)(defaultPort);
if (this.port !== defaultPort) {
console.warn('[egg-bin] server port %s is in use, now using port %o', defaultPort, this.port);
}
debug(`use available port ${this.port}`);
}
}
return {
baseDir: this.base,
workers: this.workers,
port: this.port,
framework: this.framework,
typescript: this.ctx.args.typescript,
tscompiler: this.ctx.args.tscompiler,
sticky: this.sticky,
};
}
};
exports.DevCommand = DevCommand;
__decorate([
(0, artus_cli_1.Option)({
description: 'listening port, default to 7001',
alias: 'p',
}),
__metadata("design:type", Number)
], DevCommand.prototype, "port", void 0);
__decorate([
(0, artus_cli_1.Option)({
description: 'numbers of app workers, default to 1 at local mode',
alias: ['c', 'cluster'],
default: 1,
}),
__metadata("design:type", Number)
], DevCommand.prototype, "workers", void 0);
__decorate([
(0, artus_cli_1.Option)({
description: 'specify framework that can be absolute path or npm package, default is egg',
}),
__metadata("design:type", String)
], DevCommand.prototype, "framework", void 0);
__decorate([
(0, artus_cli_1.Option)({
description: 'start a sticky cluster server, default to false',
type: 'boolean',
default: false,
}),
__metadata("design:type", Boolean)
], DevCommand.prototype, "sticky", void 0);
exports.DevCommand = DevCommand = __decorate([
(0, artus_cli_1.DefineCommand)({
command: 'dev',
description: 'Start server at local dev mode',
alias: ['d'],
})
], DevCommand);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NtZC9kZXYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXFDO0FBQ3JDLDBEQUE2QjtBQUM3QixvREFBNkQ7QUFDN0QseURBQWlDO0FBQ2pDLDhEQUFpQztBQUNqQyxpQ0FBcUM7QUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBUSxFQUFDLGFBQWEsQ0FBQyxDQUFDO0FBTy9CLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxrQkFBVztJQUt6QyxJQUFJLENBQVM7SUFPYixPQUFPLENBQVM7SUFLaEIsU0FBUyxDQUFTO0lBT2xCLE1BQU0sQ0FBVTtJQUVoQixLQUFLLENBQUMsR0FBRztRQUNQLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQztRQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7UUFDekUsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLElBQUksR0FBRyxDQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUUsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZ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
;