From aeba4cfd056cb1cab94dcf113fa7d5c3640942c8 Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Tue, 14 Sep 2021 11:10:18 +0800 Subject: [PATCH 1/6] feat: support pkgInfo.eggScriptsConfig.require --- .travis.yml | 24 ----------------- appveyor.yml | 15 ----------- lib/command.js | 27 ++++++++++++++++--- .../pkg-config/config/config.default.js | 8 ++++++ test/fixtures/pkg-config/inject.js | 3 +++ .../node_modules/egg-development/index.js | 3 +++ .../pkg-config/node_modules/egg-i18n/index.js | 3 +++ .../node_modules/egg-jsonp/index.js | 3 +++ .../node_modules/egg-logrotator/index.js | 3 +++ .../node_modules/egg-multipart/index.js | 3 +++ .../node_modules/egg-onerror/index.js | 3 +++ .../node_modules/egg-schedule/index.js | 3 +++ .../node_modules/egg-security/index.js | 3 +++ .../node_modules/egg-session/index.js | 3 +++ .../node_modules/egg-static/index.js | 3 +++ .../pkg-config/node_modules/egg-view/index.js | 3 +++ .../node_modules/egg-watcher/index.js | 3 +++ .../pkg-config/node_modules/egg/index.js | 3 +++ .../pkg-config/node_modules/egg/package.json | 4 +++ .../pkg-config/node_modules/inject/index.js | 3 +++ test/fixtures/pkg-config/package.json | 10 +++++++ test/fixtures/ts-pkg/app/controller/home.ts | 2 +- test/fixtures/ts/app/controller/home.ts | 2 +- test/start.test.js | 27 +++++++++++++++++++ 24 files changed, 120 insertions(+), 44 deletions(-) delete mode 100644 .travis.yml delete mode 100644 appveyor.yml create mode 100644 test/fixtures/pkg-config/config/config.default.js create mode 100644 test/fixtures/pkg-config/inject.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-development/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-i18n/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-jsonp/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-logrotator/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-multipart/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-onerror/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-schedule/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-security/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-session/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-static/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-view/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg-watcher/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg/index.js create mode 100644 test/fixtures/pkg-config/node_modules/egg/package.json create mode 100644 test/fixtures/pkg-config/node_modules/inject/index.js create mode 100644 test/fixtures/pkg-config/package.json diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e08a511..0000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -sudo: false -language: node_js -node_js: - - '6' - - '8' - - '10' -env: - - EGG_VERSION=1 - - EGG_VERSION=2 -matrix: - exclude: - - node_js: '6' - env: EGG_VERSION=2 -before_install: - - npm install -g npminstall -install: - - npminstall - - sed -i.bak '/"egg":/d' package.json - - npminstall -d -script: - - eval "npminstall -d egg@$EGG_VERSION" - - npm run ci -after_script: - - npminstall codecov && codecov diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 981e82b..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,15 +0,0 @@ -environment: - matrix: - - nodejs_version: '8' - - nodejs_version: '10' - -install: - - ps: Install-Product node $env:nodejs_version - - npm i npminstall && node_modules\.bin\npminstall - -test_script: - - node --version - - npm --version - - npm run test - -build: off diff --git a/lib/command.js b/lib/command.js index d57c7ff..1cce0ea 100644 --- a/lib/command.js +++ b/lib/command.js @@ -38,19 +38,40 @@ class Command extends BaseCommand { const context = super.context; const { argv, execArgvObj, cwd } = context; - // read `egg.typescript` from package.json let baseDir = argv._[0] || cwd; if (!path.isAbsolute(baseDir)) baseDir = path.join(cwd, baseDir); const pkgFile = path.join(baseDir, 'package.json'); if (fs.existsSync(pkgFile)) { const pkgInfo = require(pkgFile); - if (pkgInfo && pkgInfo.egg && pkgInfo.egg.typescript) { + const eggInfo = pkgInfo.egg; + + // read `egg.typescript` from package.json + if (eggInfo && eggInfo.typescript) { argv.sourcemap = true; } // read argv from eggScriptsConfig in package.json - if (pkgInfo && pkgInfo.eggScriptsConfig && typeof pkgInfo.eggScriptsConfig === 'object') { + const eggScriptsConfig = pkgInfo.eggScriptsConfig; + if (eggScriptsConfig && typeof eggScriptsConfig === 'object') { for (const key in pkgInfo.eggScriptsConfig) { + // read `egg.require` from package.json + if (key === 'require' && Array.isArray(eggScriptsConfig.require)) { + execArgvObj.require = execArgvObj.require || []; + eggScriptsConfig.require + .filter(injectScript => injectScript) + .forEach(injectScript => { + let requirePath = ''; + if (path.isAbsolute(injectScript) || injectScript.startsWith(`.${path.sep}`)) { + requirePath = path.resolve(baseDir, injectScript); + } else { + requirePath = injectScript; + } + execArgvObj.require.push(requirePath); + }); + continue; + } + + // other script config if (argv[key] == null) argv[key] = pkgInfo.eggScriptsConfig[key]; } } diff --git a/test/fixtures/pkg-config/config/config.default.js b/test/fixtures/pkg-config/config/config.default.js new file mode 100644 index 0000000..98de4f0 --- /dev/null +++ b/test/fixtures/pkg-config/config/config.default.js @@ -0,0 +1,8 @@ +'use strict'; + +exports.keys = '123456'; + +exports.logger = { + level: 'WARN', + consoleLevel: 'WARN', +}; diff --git a/test/fixtures/pkg-config/inject.js b/test/fixtures/pkg-config/inject.js new file mode 100644 index 0000000..2ead88c --- /dev/null +++ b/test/fixtures/pkg-config/inject.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('@@@ inject relative js by pkgInfo'); diff --git a/test/fixtures/pkg-config/node_modules/egg-development/index.js b/test/fixtures/pkg-config/node_modules/egg-development/index.js new file mode 100644 index 0000000..fba05d9 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-development/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-development'); diff --git a/test/fixtures/pkg-config/node_modules/egg-i18n/index.js b/test/fixtures/pkg-config/node_modules/egg-i18n/index.js new file mode 100644 index 0000000..8ab20c8 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-i18n/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-index'); diff --git a/test/fixtures/pkg-config/node_modules/egg-jsonp/index.js b/test/fixtures/pkg-config/node_modules/egg-jsonp/index.js new file mode 100644 index 0000000..0aaba25 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-jsonp/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-jsonp'); diff --git a/test/fixtures/pkg-config/node_modules/egg-logrotator/index.js b/test/fixtures/pkg-config/node_modules/egg-logrotator/index.js new file mode 100644 index 0000000..d2967a2 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-logrotator/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-logrotator'); diff --git a/test/fixtures/pkg-config/node_modules/egg-multipart/index.js b/test/fixtures/pkg-config/node_modules/egg-multipart/index.js new file mode 100644 index 0000000..594a5aa --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-multipart/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-multipart'); diff --git a/test/fixtures/pkg-config/node_modules/egg-onerror/index.js b/test/fixtures/pkg-config/node_modules/egg-onerror/index.js new file mode 100644 index 0000000..28c4441 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-onerror/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-onerror'); diff --git a/test/fixtures/pkg-config/node_modules/egg-schedule/index.js b/test/fixtures/pkg-config/node_modules/egg-schedule/index.js new file mode 100644 index 0000000..97dadd5 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-schedule/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-schedule'); diff --git a/test/fixtures/pkg-config/node_modules/egg-security/index.js b/test/fixtures/pkg-config/node_modules/egg-security/index.js new file mode 100644 index 0000000..d056ff8 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-security/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-security'); diff --git a/test/fixtures/pkg-config/node_modules/egg-session/index.js b/test/fixtures/pkg-config/node_modules/egg-session/index.js new file mode 100644 index 0000000..eaf9fd5 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-session/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-session'); diff --git a/test/fixtures/pkg-config/node_modules/egg-static/index.js b/test/fixtures/pkg-config/node_modules/egg-static/index.js new file mode 100644 index 0000000..3b2bfed --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-static/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-static'); diff --git a/test/fixtures/pkg-config/node_modules/egg-view/index.js b/test/fixtures/pkg-config/node_modules/egg-view/index.js new file mode 100644 index 0000000..5c218c9 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-view/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-view'); diff --git a/test/fixtures/pkg-config/node_modules/egg-watcher/index.js b/test/fixtures/pkg-config/node_modules/egg-watcher/index.js new file mode 100644 index 0000000..26971c3 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg-watcher/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg-watcher'); diff --git a/test/fixtures/pkg-config/node_modules/egg/index.js b/test/fixtures/pkg-config/node_modules/egg/index.js new file mode 100644 index 0000000..7a1482f --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg/index.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../../../../../node_modules/egg'); diff --git a/test/fixtures/pkg-config/node_modules/egg/package.json b/test/fixtures/pkg-config/node_modules/egg/package.json new file mode 100644 index 0000000..034e266 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/egg/package.json @@ -0,0 +1,4 @@ +{ + "name": "egg", + "version": "1.0.0" +} diff --git a/test/fixtures/pkg-config/node_modules/inject/index.js b/test/fixtures/pkg-config/node_modules/inject/index.js new file mode 100644 index 0000000..55d5a75 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/inject/index.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('@@@ inject node_modules by pkgInfo'); diff --git a/test/fixtures/pkg-config/package.json b/test/fixtures/pkg-config/package.json new file mode 100644 index 0000000..8900521 --- /dev/null +++ b/test/fixtures/pkg-config/package.json @@ -0,0 +1,10 @@ +{ + "name": "example", + "version": "1.0.0", + "eggScriptsConfig": { + "require": [ + "./inject.js", + "inject" + ] + } +} diff --git a/test/fixtures/ts-pkg/app/controller/home.ts b/test/fixtures/ts-pkg/app/controller/home.ts index f6a07cd..bfb11be 100644 --- a/test/fixtures/ts-pkg/app/controller/home.ts +++ b/test/fixtures/ts-pkg/app/controller/home.ts @@ -4,7 +4,7 @@ export default class AppController extends Controller { public index() { try { throw new Error('some err'); - } catch (err) { + } catch (err: any) { this.ctx.logger.error(err); this.ctx.body = { msg: err.message, diff --git a/test/fixtures/ts/app/controller/home.ts b/test/fixtures/ts/app/controller/home.ts index f6a07cd..bfb11be 100644 --- a/test/fixtures/ts/app/controller/home.ts +++ b/test/fixtures/ts/app/controller/home.ts @@ -4,7 +4,7 @@ export default class AppController extends Controller { public index() { try { throw new Error('some err'); - } catch (err) { + } catch (err: any) { this.ctx.logger.error(err); this.ctx.body = { msg: err.message, diff --git a/test/start.test.js b/test/start.test.js index a9ed9a4..8db6433 100644 --- a/test/start.test.js +++ b/test/start.test.js @@ -381,6 +381,33 @@ describe('test/start.test.js', () => { exists = yield fs.exists(malicious); assert(!exists); }); + + describe('read pkgInfo', () => { + let app; + let fixturePath; + + before(function* () { + fixturePath = path.join(__dirname, 'fixtures/pkg-config'); + yield utils.cleanup(fixturePath); + }); + + after(function* () { + app.proc.kill('SIGTERM'); + yield utils.cleanup(fixturePath); + }); + + it('should --require', function* () { + app = coffee.fork(eggBin, [ 'start', '--workers=1', fixturePath ], { cwd: fixturePath }); + app.debug(); + app.expect('code', 0); + + yield sleep(waitTime); + + assert(app.stderr === ''); + assert(app.stdout.match(/@@@ inject relative js by pkgInfo/)); + assert(app.stdout.match(/@@@ inject node_modules by pkgInfo/)); + }); + }); }); describe('--node', () => { From b45b759778f11eae678cadb5c4b4132344264512 Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Tue, 14 Sep 2021 11:42:54 +0800 Subject: [PATCH 2/6] feat: support cli require --- lib/command.js | 6 ++++++ test/start.test.js | 54 +++++++++++++++++++++++----------------------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/lib/command.js b/lib/command.js index 1cce0ea..3a503b7 100644 --- a/lib/command.js +++ b/lib/command.js @@ -26,6 +26,12 @@ class Command extends BaseCommand { type: 'boolean', alias: [ 'ts', 'typescript' ], }, + + require: { + description: 'inject to execArgv --require', + type: 'array', + alias: 'r', + }, }; this.logger = new Logger({ diff --git a/test/start.test.js b/test/start.test.js index 8db6433..64db5d7 100644 --- a/test/start.test.js +++ b/test/start.test.js @@ -30,6 +30,33 @@ describe('test/start.test.js', () => { afterEach(mm.restore); describe('start without daemon', () => { + describe('read pkgInfo', () => { + let app; + let fixturePath; + + before(function* () { + fixturePath = path.join(__dirname, 'fixtures/pkg-config'); + yield utils.cleanup(fixturePath); + }); + + after(function* () { + app.proc.kill('SIGTERM'); + yield utils.cleanup(fixturePath); + }); + + it('should --require', function* () { + app = coffee.fork(eggBin, [ 'start', '--workers=1', fixturePath ], { cwd: fixturePath }); + app.debug(); + app.expect('code', 0); + + yield sleep(waitTime); + + assert(app.stderr === ''); + assert(app.stdout.match(/@@@ inject relative js by pkgInfo/)); + assert(app.stdout.match(/@@@ inject node_modules by pkgInfo/)); + }); + }); + describe('full path', () => { let app; @@ -381,33 +408,6 @@ describe('test/start.test.js', () => { exists = yield fs.exists(malicious); assert(!exists); }); - - describe('read pkgInfo', () => { - let app; - let fixturePath; - - before(function* () { - fixturePath = path.join(__dirname, 'fixtures/pkg-config'); - yield utils.cleanup(fixturePath); - }); - - after(function* () { - app.proc.kill('SIGTERM'); - yield utils.cleanup(fixturePath); - }); - - it('should --require', function* () { - app = coffee.fork(eggBin, [ 'start', '--workers=1', fixturePath ], { cwd: fixturePath }); - app.debug(); - app.expect('code', 0); - - yield sleep(waitTime); - - assert(app.stderr === ''); - assert(app.stdout.match(/@@@ inject relative js by pkgInfo/)); - assert(app.stdout.match(/@@@ inject node_modules by pkgInfo/)); - }); - }); }); describe('--node', () => { From e21bba387b21fef14c77627a86f4f292bda31397 Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Tue, 14 Sep 2021 13:35:51 +0800 Subject: [PATCH 3/6] test: optimize test case --- test/fixtures/pkg-config/config/plugin.js | 148 ++++++++++++++++++ .../node_modules/custom-framework/index.js | 13 ++ .../custom-framework/package.json | 7 + .../node_modules/egg-development/index.js | 3 - .../pkg-config/node_modules/egg-i18n/index.js | 3 - .../node_modules/egg-jsonp/index.js | 3 - .../node_modules/egg-logrotator/index.js | 3 - .../node_modules/egg-multipart/index.js | 3 - .../node_modules/egg-onerror/index.js | 3 - .../node_modules/egg-schedule/index.js | 3 - .../node_modules/egg-security/index.js | 3 - .../node_modules/egg-session/index.js | 3 - .../node_modules/egg-static/index.js | 3 - .../pkg-config/node_modules/egg-view/index.js | 3 - .../node_modules/egg-watcher/index.js | 3 - .../pkg-config/node_modules/egg/index.js | 3 - .../pkg-config/node_modules/egg/package.json | 4 - test/fixtures/pkg-config/package.json | 3 + test/start.test.js | 8 +- 19 files changed, 177 insertions(+), 45 deletions(-) create mode 100644 test/fixtures/pkg-config/config/plugin.js create mode 100644 test/fixtures/pkg-config/node_modules/custom-framework/index.js create mode 100644 test/fixtures/pkg-config/node_modules/custom-framework/package.json delete mode 100644 test/fixtures/pkg-config/node_modules/egg-development/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-i18n/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-jsonp/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-logrotator/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-multipart/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-onerror/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-schedule/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-security/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-session/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-static/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-view/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg-watcher/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg/index.js delete mode 100644 test/fixtures/pkg-config/node_modules/egg/package.json diff --git a/test/fixtures/pkg-config/config/plugin.js b/test/fixtures/pkg-config/config/plugin.js new file mode 100644 index 0000000..18b9986 --- /dev/null +++ b/test/fixtures/pkg-config/config/plugin.js @@ -0,0 +1,148 @@ +'use strict'; + +module.exports = { + // enable plugins + + /** + * app global Error Handling + * @member {Object} Plugin#onerror + * @property {Boolean} enable - `true` by default + */ + onerror: { + enable: false, + package: 'egg-onerror', + path: 'xxxxx', + }, + + /** + * session + * @member {Object} Plugin#session + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + session: { + enable: false, + package: 'egg-session', + path: 'xxxxx', + }, + + /** + * i18n + * @member {Object} Plugin#i18n + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + i18n: { + enable: false, + package: 'egg-i18n', + path: 'xxxxx', + }, + + /** + * file and dir watcher + * @member {Object} Plugin#watcher + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + watcher: { + enable: false, + package: 'egg-watcher', + path: 'xxxxx', + }, + + /** + * multipart + * @member {Object} Plugin#multipart + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + multipart: { + enable: false, + package: 'egg-multipart', + path: 'xxxxx', + }, + + /** + * security middlewares and extends + * @member {Object} Plugin#security + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + security: { + enable: false, + package: 'egg-security', + path: 'xxxxx', + }, + + /** + * local development helper + * @member {Object} Plugin#development + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + development: { + enable: false, + package: 'egg-development', + path: 'xxxxx', + }, + + /** + * logger file rotator + * @member {Object} Plugin#logrotator + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + logrotator: { + enable: false, + package: 'egg-logrotator', + path: 'xxxxx', + }, + + /** + * schedule tasks + * @member {Object} Plugin#schedule + * @property {Boolean} enable - `true` by default + * @since 2.7.0 + */ + schedule: { + enable: false, + package: 'egg-schedule', + path: 'xxxxx', + }, + + /** + * `app/public` dir static serve + * @member {Object} Plugin#static + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + static: { + enable: false, + package: 'egg-static', + path: 'xxxxx', + }, + + /** + * jsonp support for egg + * @member {Function} Plugin#jsonp + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + jsonp: { + enable: false, + package: 'egg-jsonp', + path: 'xxxxx', + }, + + /** + * view plugin + * @member {Function} Plugin#view + * @property {Boolean} enable - `true` by default + * @since 1.0.0 + */ + view: { + enable: false, + package: 'egg-view', + path: 'xxxxx', + }, +}; diff --git a/test/fixtures/pkg-config/node_modules/custom-framework/index.js b/test/fixtures/pkg-config/node_modules/custom-framework/index.js new file mode 100644 index 0000000..499901d --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/custom-framework/index.js @@ -0,0 +1,13 @@ +'use strict'; + +const egg = require('../../../../../node_modules/egg'); + +const EGG_PATH = Symbol.for('egg#eggPath'); + +class Application extends egg.Application { + get [EGG_PATH]() { + return __dirname; + } +} + +module.exports = Object.assign(egg, { Application }); diff --git a/test/fixtures/pkg-config/node_modules/custom-framework/package.json b/test/fixtures/pkg-config/node_modules/custom-framework/package.json new file mode 100644 index 0000000..073be53 --- /dev/null +++ b/test/fixtures/pkg-config/node_modules/custom-framework/package.json @@ -0,0 +1,7 @@ +{ + "name": "custom-framework", + "version": "1.0.0", + "dependencies": { + "egg": "*" + } +} diff --git a/test/fixtures/pkg-config/node_modules/egg-development/index.js b/test/fixtures/pkg-config/node_modules/egg-development/index.js deleted file mode 100644 index fba05d9..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-development/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-development'); diff --git a/test/fixtures/pkg-config/node_modules/egg-i18n/index.js b/test/fixtures/pkg-config/node_modules/egg-i18n/index.js deleted file mode 100644 index 8ab20c8..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-i18n/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-index'); diff --git a/test/fixtures/pkg-config/node_modules/egg-jsonp/index.js b/test/fixtures/pkg-config/node_modules/egg-jsonp/index.js deleted file mode 100644 index 0aaba25..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-jsonp/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-jsonp'); diff --git a/test/fixtures/pkg-config/node_modules/egg-logrotator/index.js b/test/fixtures/pkg-config/node_modules/egg-logrotator/index.js deleted file mode 100644 index d2967a2..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-logrotator/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-logrotator'); diff --git a/test/fixtures/pkg-config/node_modules/egg-multipart/index.js b/test/fixtures/pkg-config/node_modules/egg-multipart/index.js deleted file mode 100644 index 594a5aa..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-multipart/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-multipart'); diff --git a/test/fixtures/pkg-config/node_modules/egg-onerror/index.js b/test/fixtures/pkg-config/node_modules/egg-onerror/index.js deleted file mode 100644 index 28c4441..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-onerror/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-onerror'); diff --git a/test/fixtures/pkg-config/node_modules/egg-schedule/index.js b/test/fixtures/pkg-config/node_modules/egg-schedule/index.js deleted file mode 100644 index 97dadd5..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-schedule/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-schedule'); diff --git a/test/fixtures/pkg-config/node_modules/egg-security/index.js b/test/fixtures/pkg-config/node_modules/egg-security/index.js deleted file mode 100644 index d056ff8..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-security/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-security'); diff --git a/test/fixtures/pkg-config/node_modules/egg-session/index.js b/test/fixtures/pkg-config/node_modules/egg-session/index.js deleted file mode 100644 index eaf9fd5..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-session/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-session'); diff --git a/test/fixtures/pkg-config/node_modules/egg-static/index.js b/test/fixtures/pkg-config/node_modules/egg-static/index.js deleted file mode 100644 index 3b2bfed..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-static/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-static'); diff --git a/test/fixtures/pkg-config/node_modules/egg-view/index.js b/test/fixtures/pkg-config/node_modules/egg-view/index.js deleted file mode 100644 index 5c218c9..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-view/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-view'); diff --git a/test/fixtures/pkg-config/node_modules/egg-watcher/index.js b/test/fixtures/pkg-config/node_modules/egg-watcher/index.js deleted file mode 100644 index 26971c3..0000000 --- a/test/fixtures/pkg-config/node_modules/egg-watcher/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg-watcher'); diff --git a/test/fixtures/pkg-config/node_modules/egg/index.js b/test/fixtures/pkg-config/node_modules/egg/index.js deleted file mode 100644 index 7a1482f..0000000 --- a/test/fixtures/pkg-config/node_modules/egg/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../../../../../node_modules/egg'); diff --git a/test/fixtures/pkg-config/node_modules/egg/package.json b/test/fixtures/pkg-config/node_modules/egg/package.json deleted file mode 100644 index 034e266..0000000 --- a/test/fixtures/pkg-config/node_modules/egg/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "egg", - "version": "1.0.0" -} diff --git a/test/fixtures/pkg-config/package.json b/test/fixtures/pkg-config/package.json index 8900521..7956e68 100644 --- a/test/fixtures/pkg-config/package.json +++ b/test/fixtures/pkg-config/package.json @@ -1,6 +1,9 @@ { "name": "example", "version": "1.0.0", + "egg": { + "framework": "custom-framework" + }, "eggScriptsConfig": { "require": [ "./inject.js", diff --git a/test/start.test.js b/test/start.test.js index 64db5d7..e686193 100644 --- a/test/start.test.js +++ b/test/start.test.js @@ -45,7 +45,7 @@ describe('test/start.test.js', () => { }); it('should --require', function* () { - app = coffee.fork(eggBin, [ 'start', '--workers=1', fixturePath ], { cwd: fixturePath }); + app = coffee.fork(eggBin, [ 'start', '--workers=1' ], { cwd: fixturePath }); app.debug(); app.expect('code', 0); @@ -578,7 +578,11 @@ describe('test/start.test.js', () => { const exitEvent = awaitEvent(app.proc, 'exit'); app.proc.kill('SIGTERM'); const code = yield exitEvent; - assert(code === 0); + if (isWin) { + assert(code === null); + } else { + assert(code === 0); + } }); }); }); From 9f3bcf624beb545d40e1b1e6c39251f93e964f7c Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Tue, 14 Sep 2021 15:03:54 +0800 Subject: [PATCH 4/6] refactor --- lib/command.js | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/lib/command.js b/lib/command.js index 3a503b7..f006bf5 100644 --- a/lib/command.js +++ b/lib/command.js @@ -56,31 +56,33 @@ class Command extends BaseCommand { argv.sourcemap = true; } - // read argv from eggScriptsConfig in package.json + // read `eggScriptsConfig.require` from package.json const eggScriptsConfig = pkgInfo.eggScriptsConfig; - if (eggScriptsConfig && typeof eggScriptsConfig === 'object') { - for (const key in pkgInfo.eggScriptsConfig) { - // read `egg.require` from package.json - if (key === 'require' && Array.isArray(eggScriptsConfig.require)) { - execArgvObj.require = execArgvObj.require || []; - eggScriptsConfig.require - .filter(injectScript => injectScript) - .forEach(injectScript => { - let requirePath = ''; - if (path.isAbsolute(injectScript) || injectScript.startsWith(`.${path.sep}`)) { - requirePath = path.resolve(baseDir, injectScript); - } else { - requirePath = injectScript; - } - execArgvObj.require.push(requirePath); - }); - continue; + let requireFiles = Array.isArray(argv.require) ? argv.require : []; + if (eggScriptsConfig && Array.isArray(eggScriptsConfig.require)) { + requireFiles = requireFiles.concat(eggScriptsConfig.require); + } + execArgvObj.require = execArgvObj.require || []; + requireFiles + .filter(injectScript => injectScript) + .forEach(injectScript => { + let requirePath = ''; + if (path.isAbsolute(injectScript) || injectScript.startsWith(`.${path.sep}`)) { + requirePath = path.resolve(baseDir, injectScript); + } else { + requirePath = injectScript; } + execArgvObj.require.push(requirePath); + }); - // other script config + // read argv from eggScriptsConfig in package.json + if (eggScriptsConfig && typeof eggScriptsConfig === 'object') { + for (const key in pkgInfo.eggScriptsConfig) { if (argv[key] == null) argv[key] = pkgInfo.eggScriptsConfig[key]; } } + + delete argv.require; } // execArgv From 124673ac42cbd2d28b9e5bfaf96037774fc71148 Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Tue, 14 Sep 2021 16:11:15 +0800 Subject: [PATCH 5/6] test: checking if inject scripts merged --- test/fixtures/pkg-config/inject2.js | 3 +++ test/start.test.js | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/pkg-config/inject2.js diff --git a/test/fixtures/pkg-config/inject2.js b/test/fixtures/pkg-config/inject2.js new file mode 100644 index 0000000..4fa540d --- /dev/null +++ b/test/fixtures/pkg-config/inject2.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('@@@ inject by cli'); diff --git a/test/start.test.js b/test/start.test.js index e686193..26a3f37 100644 --- a/test/start.test.js +++ b/test/start.test.js @@ -45,7 +45,7 @@ describe('test/start.test.js', () => { }); it('should --require', function* () { - app = coffee.fork(eggBin, [ 'start', '--workers=1' ], { cwd: fixturePath }); + app = coffee.fork(eggBin, [ 'start', '--workers=1', '--require=./inject2' ], { cwd: fixturePath }); app.debug(); app.expect('code', 0); @@ -54,6 +54,7 @@ describe('test/start.test.js', () => { assert(app.stderr === ''); assert(app.stdout.match(/@@@ inject relative js by pkgInfo/)); assert(app.stdout.match(/@@@ inject node_modules by pkgInfo/)); + assert(app.stdout.match(/@@@ inject by cli/)); }); }); From 3b49af108cf8bc39c9e419fde5aa0457b819a4ec Mon Sep 17 00:00:00 2001 From: hyj1991 Date: Tue, 14 Sep 2021 16:51:22 +0800 Subject: [PATCH 6/6] fix --- test/stop.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/stop.test.js b/test/stop.test.js index 16cd38e..95fe485 100644 --- a/test/stop.test.js +++ b/test/stop.test.js @@ -18,7 +18,7 @@ describe('test/stop.test.js', () => { const timeoutPath = path.join(__dirname, 'fixtures/stop-timeout'); const homePath = path.join(__dirname, 'fixtures/home'); const logDir = path.join(homePath, 'logs'); - const waitTime = '10s'; + const waitTime = '15s'; before(function* () { yield mkdirp(homePath); @@ -271,7 +271,7 @@ describe('test/stop.test.js', () => { describe('stop all with timeout', function() { let app; let killer; - this.timeout(12000); + this.timeout(17000); beforeEach(function* () { yield utils.cleanup(timeoutPath); app = coffee.fork(eggBin, [ 'start', '--workers=2', '--title=stop-timeout', timeoutPath ]);