diff --git a/lib/command.js b/lib/command.js index f006bf5..589b75e 100644 --- a/lib/command.js +++ b/lib/command.js @@ -51,11 +51,6 @@ class Command extends BaseCommand { const pkgInfo = require(pkgFile); const eggInfo = pkgInfo.egg; - // read `egg.typescript` from package.json - if (eggInfo && eggInfo.typescript) { - argv.sourcemap = true; - } - // read `eggScriptsConfig.require` from package.json const eggScriptsConfig = pkgInfo.eggScriptsConfig; let requireFiles = Array.isArray(argv.require) ? argv.require : []; @@ -82,6 +77,11 @@ class Command extends BaseCommand { } } + // read `egg.typescript` from package.json + if (eggInfo && eggInfo.typescript && typeof argv.sourcemap === 'undefined') { + argv.sourcemap = true; + } + delete argv.require; } diff --git a/test/fixtures/pkg-config-sourcemap/config/config.default.js b/test/fixtures/pkg-config-sourcemap/config/config.default.js new file mode 100644 index 0000000..98de4f0 --- /dev/null +++ b/test/fixtures/pkg-config-sourcemap/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-sourcemap/config/plugin.js b/test/fixtures/pkg-config-sourcemap/config/plugin.js new file mode 100644 index 0000000..18b9986 --- /dev/null +++ b/test/fixtures/pkg-config-sourcemap/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-sourcemap/node_modules/custom-framework/index.js b/test/fixtures/pkg-config-sourcemap/node_modules/custom-framework/index.js new file mode 100644 index 0000000..499901d --- /dev/null +++ b/test/fixtures/pkg-config-sourcemap/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-sourcemap/node_modules/custom-framework/package.json b/test/fixtures/pkg-config-sourcemap/node_modules/custom-framework/package.json new file mode 100644 index 0000000..073be53 --- /dev/null +++ b/test/fixtures/pkg-config-sourcemap/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-sourcemap/node_modules/inject/index.js b/test/fixtures/pkg-config-sourcemap/node_modules/inject/index.js new file mode 100644 index 0000000..638c7b9 --- /dev/null +++ b/test/fixtures/pkg-config-sourcemap/node_modules/inject/index.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('@@@ inject script'); diff --git a/test/fixtures/pkg-config-sourcemap/package.json b/test/fixtures/pkg-config-sourcemap/package.json new file mode 100644 index 0000000..a35c104 --- /dev/null +++ b/test/fixtures/pkg-config-sourcemap/package.json @@ -0,0 +1,11 @@ +{ + "name": "pkg-config-sourcemap", + "version": "1.0.0", + "egg": { + "typescript": true, + "framework": "custom-framework" + }, + "eggScriptsConfig": { + "sourcemap": false + } +} diff --git a/test/start.test.js b/test/start.test.js index e6b5866..d7b217c 100644 --- a/test/start.test.js +++ b/test/start.test.js @@ -69,6 +69,30 @@ describe('test/start.test.js', () => { }); }); + describe('sourcemap default value should respect eggScriptConfig', () => { + let app; + let fixturePath; + + before(function* () { + fixturePath = path.join(__dirname, 'fixtures/pkg-config-sourcemap'); + yield utils.cleanup(fixturePath); + }); + + after(function* () { + app.proc.kill('SIGTERM'); + yield utils.cleanup(fixturePath); + }); + + it('should not enable sourcemap-support', function* () { + app = coffee.fork(eggBin, [ 'start', '--workers=1' ], { cwd: fixturePath }); + app.debug(); + app.expect('code', 0); + + yield sleep(waitTime); + assert(!/--require .*\/node_modules\/.*source-map-support/.test(app.stdout)); + }); + }); + describe('full path', () => { let app;