Skip to content

Commit 5467686

Browse files
committed
:add: modifyCreateServer method.
1 parent 7bab578 commit 5467686

File tree

8 files changed

+76
-20
lines changed

8 files changed

+76
-20
lines changed

plugins/commands/serve/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ module.exports = function serveCommand(api, opts) {
99
const chalk = require('chalk');
1010

1111
api.beforeServer(params => {
12-
api.applyPluginHooks('beforeDevServer', params);
12+
return api.applyPluginHooks('beforeDevServer', params);
1313
});
1414

1515
api.afterServer(params => {
16-
api.applyPluginHooks('afterDevServer', params);
16+
return api.applyPluginHooks('afterDevServer', params);
1717
});
1818

1919
// serve
@@ -37,7 +37,7 @@ Examples:
3737
micro-app serve --type vusion --open-soft-link
3838
`.trim(),
3939
}, args => {
40-
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
40+
process.env.NODE_ENV = args.mode || process.env.NODE_ENV || 'development';
4141

4242
const runServe = require('../start/serve');
4343
return runServe(api, args, opts);

plugins/commands/start/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Examples:
2424
micro-app start --type vusion
2525
`.trim(),
2626
}, args => {
27-
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
27+
process.env.NODE_ENV = args.mode || process.env.NODE_ENV || 'production';
2828

2929
const runServe = require('./serve');
3030
return runServe(api, args, opts);

plugins/commands/start/methods.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,16 @@ module.exports = api => {
66
type: api.API_TYPE.EVENT,
77
description: '服务启动前事件',
88
});
9+
api.registerMethod('afterServer', {
10+
type: api.API_TYPE.EVENT,
11+
description: '服务启动后事件',
12+
});
13+
api.registerMethod('modifyCreateServer', {
14+
type: api.API_TYPE.MODIFY,
15+
description: '修改内部服务创建事件, 自定义 Node 服务, 需返回 Promise.resolve({ host, port, url })',
16+
});
917

18+
// 以下只在内置服务中触发.
1019
api.registerMethod('onServerInit', {
1120
type: api.API_TYPE.EVENT,
1221
description: '服务初始化时事件',
@@ -36,8 +45,4 @@ module.exports = api => {
3645
description: '服务从业务逻辑出来后事件',
3746
});
3847

39-
api.registerMethod('afterServer', {
40-
type: api.API_TYPE.EVENT,
41-
description: '服务启动后事件',
42-
});
4348
};

plugins/commands/start/serve.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
module.exports = function runServe(api, args, opts) {
44
const chalk = require('chalk');
5+
const _ = require('lodash');
56

67
const logger = api.logger;
78

@@ -12,11 +13,17 @@ module.exports = function runServe(api, args, opts) {
1213

1314
api.applyPluginHooks('beforeServer', { args });
1415

15-
const createServer = require('../../../src/server/createServer');
16+
// custom server
17+
const createServer = api.applyPluginHooks('modifyCreateServer', require('../../../src/server/createServer'));
18+
if (!createServer || !_.isFunction(createServer)) {
19+
logger.throw('[Plugin] api.modifyCreateServer() must be return function !');
20+
}
1621

1722
return createServer(api, args)
1823
.then(({ host, port, url }) => {
19-
api.logger.info(`Open Browser, URL: ${chalk.yellow(url)}`);
24+
if (url && _.isString(url)) {
25+
logger.info(`Open Browser, URL: ${chalk.yellow(url)}`);
26+
}
2027
api.applyPluginHooks('afterServer', { args, host, port, url });
2128
}).catch(err => {
2229
api.applyPluginHooks('afterServer', { args, err });

plugins/commands/start/start.test.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,42 @@ describe('Command start', () => {
108108

109109
});
110110

111+
it('modifyCreateServer', async () => {
112+
113+
const { service } = require('../../../bin/base');
114+
115+
const plugin = service.plugins.find(item => item.id === 'cli:plugins-commands-start');
116+
expect(typeof plugin).toEqual('object');
117+
118+
service.init();
119+
120+
expect(plugin._api).not.toBeUndefined();
121+
122+
const argv = plugin._api.parseArgv();
123+
expect(argv).not.toBeNull();
124+
expect(argv).not.toBeUndefined();
125+
126+
plugin._api.modifyCreateServer(() => {
127+
128+
return function(api, args) {
129+
130+
expect(args).not.toBeNull();
131+
expect(args).not.toBeUndefined();
132+
133+
return Promise.resolve({
134+
host: 'a',
135+
port: 22,
136+
url: 'abc',
137+
});
138+
};
139+
});
140+
141+
await service.runCommand('start', getArgvs());
142+
143+
expect(service.commands.start).not.toBeNull();
144+
expect(service.commands.start).not.toBeUndefined();
145+
expect(typeof service.commands.start).toEqual('object');
146+
147+
});
148+
111149
});

plugins/extends/server/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ module.exports = function extendServer(api, opts) {
1111

1212
const logger = api.logger;
1313

14+
api.extendMethod('parseArgv', {
15+
description: 'resolve parse command argv.',
16+
}, function() {
17+
const yParser = require('yargs-parser');
18+
const argv = yParser(process.argv.slice(2));
19+
return argv;
20+
});
21+
1422
api.extendConfig('selfServerConfig', {
1523
cache: true,
1624
description: '当前工程下的服务配置',

src/server/createServer.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ const koaConvert = require('koa-convert');
66
const _ = require('lodash');
77
const tryRequire = require('try-require');
88

9-
const HookEvent = require('./HookEvent');
10-
119
module.exports = function(api, args = {}) {
1210
const logger = api.logger;
1311
// const isDev = api.mode === 'development';
@@ -28,6 +26,7 @@ module.exports = function(api, args = {}) {
2826
});
2927

3028
// init hook
29+
const HookEvent = require('./HookEvent');
3130
const _HookEvent = new HookEvent(app); // 兼容
3231
initHooks(_HookEvent, serverConfig, logger);
3332

@@ -61,7 +60,6 @@ module.exports = function(api, args = {}) {
6160
reject(err);
6261
return;
6362
}
64-
console.log('\r\n');
6563
logger.success(`Server running... listen on ${port}, host: ${host}`);
6664

6765
api.applyPluginHooks('onServerRunSuccess', { host, port, args });

yarn.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3325,20 +3325,20 @@ https-browserify@^1.0.0:
33253325
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
33263326
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
33273327

3328-
husky@^3.0.8:
3329-
version "3.0.8"
3330-
resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.8.tgz#8de3fed26ce9b43034ef51013c4ad368b6b74ea8"
3331-
integrity sha512-HFOsgcyrX3qe/rBuqyTt+P4Gxn5P0seJmr215LAZ/vnwK3jWB3r0ck7swbzGRUbufCf9w/lgHPVbF/YXQALgfQ==
3328+
husky@^3.0.9:
3329+
version "3.0.9"
3330+
resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.9.tgz#a2c3e9829bfd6b4957509a9500d2eef5dbfc8044"
3331+
integrity sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg==
33323332
dependencies:
33333333
chalk "^2.4.2"
3334+
ci-info "^2.0.0"
33343335
cosmiconfig "^5.2.1"
33353336
execa "^1.0.0"
33363337
get-stdin "^7.0.0"
3337-
is-ci "^2.0.0"
33383338
opencollective-postinstall "^2.0.2"
33393339
pkg-dir "^4.2.0"
33403340
please-upgrade-node "^3.2.0"
3341-
read-pkg "^5.1.1"
3341+
read-pkg "^5.2.0"
33423342
run-node "^1.0.0"
33433343
slash "^3.0.0"
33443344

@@ -5854,7 +5854,7 @@ read-pkg@^3.0.0:
58545854
normalize-package-data "^2.3.2"
58555855
path-type "^3.0.0"
58565856

5857-
read-pkg@^5.1.1:
5857+
read-pkg@^5.2.0:
58585858
version "5.2.0"
58595859
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
58605860
integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==

0 commit comments

Comments
 (0)