From 1b84fdaf2c9f72f1a5bceb381df85ef7e590ac21 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 8 Nov 2019 08:43:59 +0100 Subject: [PATCH] Make sure the CLI supports output plugins --- src/utils/mergeOptions.ts | 14 ++++++++------ .../_config.js | 4 ++++ .../_expected/main.js | 7 +++++++ .../_expected/minified.js | 1 + .../multiple-targets-different-plugins/main.js | 3 +++ .../rollup.config.js | 16 ++++++++++++++++ test/misc/optionList.js | 2 +- 7 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 test/cli/samples/multiple-targets-different-plugins/_config.js create mode 100644 test/cli/samples/multiple-targets-different-plugins/_expected/main.js create mode 100644 test/cli/samples/multiple-targets-different-plugins/_expected/minified.js create mode 100644 test/cli/samples/multiple-targets-different-plugins/main.js create mode 100644 test/cli/samples/multiple-targets-different-plugins/rollup.config.js diff --git a/src/utils/mergeOptions.ts b/src/utils/mergeOptions.ts index 4d8b4a92d95..d6332a16f77 100644 --- a/src/utils/mergeOptions.ts +++ b/src/utils/mergeOptions.ts @@ -168,14 +168,15 @@ function addUnknownOptionErrors( optionType: string, ignoredKeys: RegExp = /$./ ) { - const unknownOptions = options.filter( - key => validOptions.indexOf(key) === -1 && !ignoredKeys.test(key) - ); + const validOptionSet = new Set(validOptions); + const unknownOptions = options.filter(key => !validOptionSet.has(key) && !ignoredKeys.test(key)); if (unknownOptions.length > 0) errors.push( - `Unknown ${optionType}: ${unknownOptions.join( - ', ' - )}. Allowed options: ${validOptions.sort().join(', ')}` + `Unknown ${optionType}: ${unknownOptions.join(', ')}. Allowed options: ${Array.from( + validOptionSet + ) + .sort() + .join(', ')}` ); } @@ -283,6 +284,7 @@ function getOutputOptions( noConflict: getOption('noConflict'), outro: getOption('outro'), paths: getOption('paths'), + plugins: config.plugins as any, preferConst: getOption('preferConst'), sourcemap: getOption('sourcemap'), sourcemapExcludeSources: getOption('sourcemapExcludeSources'), diff --git a/test/cli/samples/multiple-targets-different-plugins/_config.js b/test/cli/samples/multiple-targets-different-plugins/_config.js new file mode 100644 index 00000000000..e9ded7da1c6 --- /dev/null +++ b/test/cli/samples/multiple-targets-different-plugins/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: 'generates multiple output files, only one of which is minified', + command: 'rollup -c' +}; diff --git a/test/cli/samples/multiple-targets-different-plugins/_expected/main.js b/test/cli/samples/multiple-targets-different-plugins/_expected/main.js new file mode 100644 index 00000000000..7fb07e7ab0f --- /dev/null +++ b/test/cli/samples/multiple-targets-different-plugins/_expected/main.js @@ -0,0 +1,7 @@ +'use strict'; + +const Hello = 1; +console.log(Hello); +var main = 0; + +module.exports = main; diff --git a/test/cli/samples/multiple-targets-different-plugins/_expected/minified.js b/test/cli/samples/multiple-targets-different-plugins/_expected/minified.js new file mode 100644 index 00000000000..d5fc32bfdf8 --- /dev/null +++ b/test/cli/samples/multiple-targets-different-plugins/_expected/minified.js @@ -0,0 +1 @@ +"use strict";const Hello=1;console.log(1);var main=0;module.exports=main; diff --git a/test/cli/samples/multiple-targets-different-plugins/main.js b/test/cli/samples/multiple-targets-different-plugins/main.js new file mode 100644 index 00000000000..d9c8e76411d --- /dev/null +++ b/test/cli/samples/multiple-targets-different-plugins/main.js @@ -0,0 +1,3 @@ +const Hello = 1; +console.log(Hello); +export default 0; diff --git a/test/cli/samples/multiple-targets-different-plugins/rollup.config.js b/test/cli/samples/multiple-targets-different-plugins/rollup.config.js new file mode 100644 index 00000000000..a0d9108c282 --- /dev/null +++ b/test/cli/samples/multiple-targets-different-plugins/rollup.config.js @@ -0,0 +1,16 @@ +import { terser } from 'rollup-plugin-terser'; + +export default { + input: 'main.js', + output: [ + { + format: 'cjs', + file: '_actual/main.js' + }, + { + format: 'cjs', + file: '_actual/minified.js', + plugins: [terser()] + } + ] +}; diff --git a/test/misc/optionList.js b/test/misc/optionList.js index 4a28a584e70..17211adb8b5 100644 --- a/test/misc/optionList.js +++ b/test/misc/optionList.js @@ -1,3 +1,3 @@ exports.input = 'acorn, acornInjectPlugins, cache, chunkGroupingSize, context, experimentalCacheExpiry, experimentalOptimizeChunks, experimentalTopLevelAwait, external, inlineDynamicImports, input, manualChunks, moduleContext, onwarn, perf, plugins, preserveModules, preserveSymlinks, shimMissingExports, strictDeprecations, treeshake, watch'; exports.flags = 'acorn, acornInjectPlugins, amd, assetFileNames, banner, c, cache, chunkFileNames, chunkGroupingSize, compact, config, context, d, dir, dynamicImportFunction, e, entryFileNames, environment, esModule, experimentalCacheExpiry, experimentalOptimizeChunks, experimentalTopLevelAwait, exports, extend, external, externalLiveBindings, f, file, footer, format, freeze, g, globals, h, i, indent, inlineDynamicImports, input, interop, intro, m, manualChunks, moduleContext, n, name, namespaceToStringTag, noConflict, o, onwarn, outro, paths, perf, plugins, preferConst, preserveModules, preserveSymlinks, shimMissingExports, silent, sourcemap, sourcemapExcludeSources, sourcemapFile, strict, strictDeprecations, treeshake, v, w, watch'; -exports.output = 'amd, assetFileNames, banner, chunkFileNames, compact, dir, dynamicImportFunction, entryFileNames, esModule, exports, extend, externalLiveBindings, file, footer, format, freeze, globals, indent, interop, intro, name, namespaceToStringTag, noConflict, outro, paths, preferConst, sourcemap, sourcemapExcludeSources, sourcemapFile, sourcemapPathTransform, strict'; +exports.output = 'amd, assetFileNames, banner, chunkFileNames, compact, dir, dynamicImportFunction, entryFileNames, esModule, exports, extend, externalLiveBindings, file, footer, format, freeze, globals, indent, interop, intro, name, namespaceToStringTag, noConflict, outro, paths, plugins, preferConst, sourcemap, sourcemapExcludeSources, sourcemapFile, sourcemapPathTransform, strict';