diff --git a/src/utils.js b/src/utils.js index c5b00d10..bdbf7910 100644 --- a/src/utils.js +++ b/src/utils.js @@ -480,9 +480,9 @@ function getExportCode( if (exportType === 'locals') { exportItems.push( - `${ - esModule ? 'export default' : 'module.exports =' - } {\n${exportLocalsCode}\n};` + `${esModule ? 'export default' : 'module.exports ='} ${ + exportLocalsCode ? `{\n${exportLocalsCode}\n}` : '{}' + };` ); } else { if (exportLocalsCode) { diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index ef5ed1b2..0f296761 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -1,5 +1,42 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`loader issue #1033 (2): errors 1`] = `Array []`; + +exports[`loader issue #1033 (2): module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`loader issue #1033 (2): result 1`] = ` +Array [ + Array [ + "./modules/issue-1033/issue-1033.css", + "", + "", + ], +] +`; + +exports[`loader issue #1033 (2): warnings 1`] = `Array []`; + +exports[`loader issue #1033: errors 1`] = `Array []`; + +exports[`loader issue #1033: module 1`] = ` +"// Exports +module.exports = {}; +" +`; + +exports[`loader issue #1033: result 1`] = `Object {}`; + +exports[`loader issue #1033: warnings 1`] = `Array []`; + exports[`loader should reuse \`ast\` from "postcss-loader": errors 1`] = `Array []`; exports[`loader should reuse \`ast\` from "postcss-loader": module 1`] = ` diff --git a/test/fixtures/modules/issue-1033/issue-1033.css b/test/fixtures/modules/issue-1033/issue-1033.css new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/modules/issue-1033/issue-1033.js b/test/fixtures/modules/issue-1033/issue-1033.js new file mode 100644 index 00000000..fcb67b1f --- /dev/null +++ b/test/fixtures/modules/issue-1033/issue-1033.js @@ -0,0 +1,5 @@ +import css from './issue-1033.css'; + +__export__ = css; + +export default css; diff --git a/test/loader.test.js b/test/loader.test.js index 68741413..8763bd34 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -308,4 +308,37 @@ describe('loader', () => { expect(getWarnings(stats)).toMatchSnapshot('warnings'); expect(getErrors(stats)).toMatchSnapshot('errors'); }); + + it('issue #1033', async () => { + const compiler = getCompiler('./modules/issue-1033/issue-1033.js', { + modules: { mode: 'local', localIdentName: '_[local]' }, + onlyLocals: true, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-1033/issue-1033.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('issue #1033 (2)', async () => { + const compiler = getCompiler('./modules/issue-1033/issue-1033.js', { + modules: { mode: 'local', localIdentName: '_[local]' }, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-1033/issue-1033.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); });