From aaaa07bd510cdd3d0b30cb69eb622d8798bd15eb Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Fri, 28 Aug 2020 17:54:10 +0530 Subject: [PATCH] feat: allow using cjs as default config (#1775) --- .../webpack-cli/lib/groups/ConfigGroup.js | 3 ++- .../basic-config/default-js-config.test.js} | 6 +++-- .../defaults/basic-config}/index.js | 0 .../defaults/basic-config}/webpack.config.js | 0 .../cjs-config/default-cjs-config.test.js | 22 +++++++++++++++++++ test/config/defaults/cjs-config/index.js | 1 + .../defaults/cjs-config/webpack.config.cjs | 6 +++++ 7 files changed, 35 insertions(+), 3 deletions(-) rename test/{zero-config/with-config/zero-config-entry.test.js => config/defaults/basic-config/default-js-config.test.js} (77%) rename test/{zero-config/with-config => config/defaults/basic-config}/index.js (100%) rename test/{zero-config/with-config => config/defaults/basic-config}/webpack.config.js (100%) create mode 100644 test/config/defaults/cjs-config/default-cjs-config.test.js create mode 100644 test/config/defaults/cjs-config/index.js create mode 100644 test/config/defaults/cjs-config/webpack.config.cjs diff --git a/packages/webpack-cli/lib/groups/ConfigGroup.js b/packages/webpack-cli/lib/groups/ConfigGroup.js index f9c86bc67fe..ed22885fce9 100644 --- a/packages/webpack-cli/lib/groups/ConfigGroup.js +++ b/packages/webpack-cli/lib/groups/ConfigGroup.js @@ -31,7 +31,8 @@ const modeAlias = { const getDefaultConfigFiles = () => { return DEFAULT_CONFIG_LOC.map((filename) => { - return Object.keys(extensions).map((ext) => { + // Since .cjs is not available on interpret side add it manually to default config extension list + return [...Object.keys(extensions), '.cjs'].map((ext) => { return { path: resolve(filename + ext), ext: ext, diff --git a/test/zero-config/with-config/zero-config-entry.test.js b/test/config/defaults/basic-config/default-js-config.test.js similarity index 77% rename from test/zero-config/with-config/zero-config-entry.test.js rename to test/config/defaults/basic-config/default-js-config.test.js index 82d1c2abc0d..785a6e02078 100644 --- a/test/zero-config/with-config/zero-config-entry.test.js +++ b/test/config/defaults/basic-config/default-js-config.test.js @@ -1,10 +1,10 @@ const fs = require('fs'); const path = require('path'); -const { run } = require('../../utils/test-utils'); +const { run } = require('../../../utils/test-utils'); describe('Zero Config', () => { it('runs when config is present but not supplied via flag', () => { - const { stdout, stderr } = run(__dirname, [], false); + const { stdout, stderr, exitCode } = run(__dirname, [], false); // default entry should be used expect(stdout).toContain('./index.js'); // should pick up the output path from config @@ -13,6 +13,8 @@ describe('Zero Config', () => { expect(stdout).toContain('Version'); expect(stdout).toContain('Built at'); expect(stdout).toContain('Time'); + // Should return the correct exit code + expect(exitCode).toEqual(0); // check that the output file exists expect(fs.existsSync(path.join(__dirname, '/dist/test-output.js'))).toBeTruthy(); expect(stderr).toBeFalsy(); diff --git a/test/zero-config/with-config/index.js b/test/config/defaults/basic-config/index.js similarity index 100% rename from test/zero-config/with-config/index.js rename to test/config/defaults/basic-config/index.js diff --git a/test/zero-config/with-config/webpack.config.js b/test/config/defaults/basic-config/webpack.config.js similarity index 100% rename from test/zero-config/with-config/webpack.config.js rename to test/config/defaults/basic-config/webpack.config.js diff --git a/test/config/defaults/cjs-config/default-cjs-config.test.js b/test/config/defaults/cjs-config/default-cjs-config.test.js new file mode 100644 index 00000000000..0adda400566 --- /dev/null +++ b/test/config/defaults/cjs-config/default-cjs-config.test.js @@ -0,0 +1,22 @@ +const fs = require('fs'); +const path = require('path'); +const { run } = require('../../../utils/test-utils'); + +describe('Default Config:', () => { + it('Should be able to pick cjs config by default', () => { + const { stdout, stderr, exitCode } = run(__dirname, [], false); + // default entry should be used + expect(stdout).toContain('./index.js'); + // should pick up the output path from config + expect(stdout).toContain('Entrypoint main = test-output'); + expect(stdout).toContain('Hash'); + expect(stdout).toContain('Version'); + expect(stdout).toContain('Built at'); + expect(stdout).toContain('Time'); + // Should return the correct exit code + expect(exitCode).toEqual(0); + // check that the output file exists + expect(fs.existsSync(path.join(__dirname, '/dist/test-output.js'))).toBeTruthy(); + expect(stderr).toBeFalsy(); + }); +}); diff --git a/test/config/defaults/cjs-config/index.js b/test/config/defaults/cjs-config/index.js new file mode 100644 index 00000000000..278b015b7f7 --- /dev/null +++ b/test/config/defaults/cjs-config/index.js @@ -0,0 +1 @@ +console.log("Jotaro Kujo") diff --git a/test/config/defaults/cjs-config/webpack.config.cjs b/test/config/defaults/cjs-config/webpack.config.cjs new file mode 100644 index 00000000000..6593a7a44a3 --- /dev/null +++ b/test/config/defaults/cjs-config/webpack.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + mode: 'development', + output: { + filename: 'test-output.js', + }, +};