From b796c5589082703a2336dc30783489774120ae6e Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Tue, 30 Aug 2022 19:56:43 +0200 Subject: [PATCH] [v3.0] Remove warning when using implicit default export mode --- docs/999-big-list-of-options.md | 2 -- src/Chunk.ts | 1 - src/utils/error.ts | 11 ----------- src/utils/getExportMode.ts | 11 +---------- .../samples/warn-implicit-cjs-auto/_config.js | 15 --------------- .../samples/warn-implicit-cjs-auto/main.js | 1 - 6 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 test/function/samples/warn-implicit-cjs-auto/_config.js delete mode 100644 test/function/samples/warn-implicit-cjs-auto/main.js diff --git a/docs/999-big-list-of-options.md b/docs/999-big-list-of-options.md index 1cfd640156f..aa96dcb196a 100755 --- a/docs/999-big-list-of-options.md +++ b/docs/999-big-list-of-options.md @@ -1466,8 +1466,6 @@ Note: There are some tools such as Babel, TypeScript, Webpack, and `@rollup/plug In other words for those tools, you cannot create a package interface where `const lib = require("your-lib")` yields the same as `import lib from "your-lib"`. With named export mode however, `const {lib} = require("your-lib")` will be equivalent to `import {lib} from "your-lib"`. -To alert you to this, Rollup will generate a warning when you encounter such a situation and did not select an explicit value for `output.exports`. - #### output.externalLiveBindings Type: `boolean`
CLI: `--externalLiveBindings`/`--no-externalLiveBindings`
Default: `true` diff --git a/src/Chunk.ts b/src/Chunk.ts index da2081b3afa..3c5c26ca28c 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -332,7 +332,6 @@ export default class Chunk { this.exportMode = getExportMode( this, this.outputOptions, - this.unsetOptions, this.facadeModule!.id, this.inputOptions.onwarn ); diff --git a/src/utils/error.ts b/src/utils/error.ts index b9d06647574..925f1a7eeba 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -95,7 +95,6 @@ const ADDON_ERROR = 'ADDON_ERROR', ONLY_INLINE_SOURCEMAPS = 'ONLY_INLINE_SOURCEMAPS', PARSE_ERROR = 'PARSE_ERROR', PLUGIN_ERROR = 'PLUGIN_ERROR', - PREFER_NAMED_EXPORTS = 'PREFER_NAMED_EXPORTS', SHIMMED_EXPORT = 'SHIMMED_EXPORT', SOURCEMAP_BROKEN = 'SOURCEMAP_BROKEN', SOURCEMAP_ERROR = 'SOURCEMAP_ERROR', @@ -710,16 +709,6 @@ export function errPluginError( return error; } -export function errPreferNamedExports(facadeModuleId: string): RollupLog { - const file = relativeId(facadeModuleId); - return { - code: PREFER_NAMED_EXPORTS, - id: facadeModuleId, - message: `Entry module "${file}" is implicitly using "default" export mode, which means for CommonJS output that its default export is assigned to "module.exports". For many tools, such CommonJS output will not be interchangeable with the original ES module. If this is intended, explicitly set "output.exports" to either "auto" or "default", otherwise you might want to consider changing the signature of "${file}" to use named exports only.`, - url: `https://rollupjs.org/guide/en/#outputexports` - }; -} - export function errShimmedExport(id: string, binding: string): RollupLog { return { binding, diff --git a/src/utils/getExportMode.ts b/src/utils/getExportMode.ts index c3d1dbc0f31..983f1eaee3a 100644 --- a/src/utils/getExportMode.ts +++ b/src/utils/getExportMode.ts @@ -1,16 +1,10 @@ import type Chunk from '../Chunk'; import type { NormalizedOutputOptions, WarningHandler } from '../rollup/types'; -import { - errIncompatibleExportOptionValue, - errMixedExport, - error, - errPreferNamedExports -} from './error'; +import { errIncompatibleExportOptionValue, errMixedExport, error } from './error'; export default function getExportMode( chunk: Chunk, { exports: exportMode, name, format }: NormalizedOutputOptions, - unsetOptions: ReadonlySet, facadeModuleId: string, warn: WarningHandler ): 'default' | 'named' | 'none' { @@ -28,9 +22,6 @@ export default function getExportMode( if (exportKeys.length === 0) { exportMode = 'none'; } else if (exportKeys.length === 1 && exportKeys[0] === 'default') { - if (format === 'cjs' && unsetOptions.has('exports')) { - warn(errPreferNamedExports(facadeModuleId)); - } exportMode = 'default'; } else { if (format !== 'es' && format !== 'system' && exportKeys.includes('default')) { diff --git a/test/function/samples/warn-implicit-cjs-auto/_config.js b/test/function/samples/warn-implicit-cjs-auto/_config.js deleted file mode 100644 index e515365d8f0..00000000000 --- a/test/function/samples/warn-implicit-cjs-auto/_config.js +++ /dev/null @@ -1,15 +0,0 @@ -const path = require('path'); - -module.exports = { - description: 'warns when using implicit default export mode in CommonJS', - options: { output: { exports: undefined } }, - warnings: [ - { - code: 'PREFER_NAMED_EXPORTS', - id: path.join(__dirname, 'main.js'), - message: - 'Entry module "main.js" is implicitly using "default" export mode, which means for CommonJS output that its default export is assigned to "module.exports". For many tools, such CommonJS output will not be interchangeable with the original ES module. If this is intended, explicitly set "output.exports" to either "auto" or "default", otherwise you might want to consider changing the signature of "main.js" to use named exports only.', - url: 'https://rollupjs.org/guide/en/#outputexports' - } - ] -}; diff --git a/test/function/samples/warn-implicit-cjs-auto/main.js b/test/function/samples/warn-implicit-cjs-auto/main.js deleted file mode 100644 index 7a4e8a723a4..00000000000 --- a/test/function/samples/warn-implicit-cjs-auto/main.js +++ /dev/null @@ -1 +0,0 @@ -export default 42;