mergeOptions.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. /*
  2. @license
  3. Rollup.js v2.40.0
  4. Fri, 26 Feb 2021 14:39:44 GMT - commit 0a0958ff926554abe9916178f56762ba71301ddd
  5. https://github.com/rollup/rollup
  6. Released under the MIT License.
  7. */
  8. 'use strict';
  9. var rollup = require('./rollup.js');
  10. const commandAliases = {
  11. c: 'config',
  12. d: 'dir',
  13. e: 'external',
  14. f: 'format',
  15. g: 'globals',
  16. h: 'help',
  17. i: 'input',
  18. m: 'sourcemap',
  19. n: 'name',
  20. o: 'file',
  21. p: 'plugin',
  22. v: 'version',
  23. w: 'watch'
  24. };
  25. function mergeOptions(config, rawCommandOptions = { external: [], globals: undefined }, defaultOnWarnHandler = rollup.defaultOnWarn) {
  26. const command = getCommandOptions(rawCommandOptions);
  27. const inputOptions = mergeInputOptions(config, command, defaultOnWarnHandler);
  28. const warn = inputOptions.onwarn;
  29. if (command.output) {
  30. Object.assign(command, command.output);
  31. }
  32. const outputOptionsArray = rollup.ensureArray(config.output);
  33. if (outputOptionsArray.length === 0)
  34. outputOptionsArray.push({});
  35. const outputOptions = outputOptionsArray.map(singleOutputOptions => mergeOutputOptions(singleOutputOptions, command, warn));
  36. rollup.warnUnknownOptions(command, Object.keys(inputOptions).concat(Object.keys(outputOptions[0]).filter(option => option !== 'sourcemapPathTransform'), Object.keys(commandAliases), 'config', 'environment', 'plugin', 'silent', 'failAfterWarnings', 'stdin', 'waitForBundleInput'), 'CLI flags', warn, /^_$|output$|config/);
  37. inputOptions.output = outputOptions;
  38. return inputOptions;
  39. }
  40. function getCommandOptions(rawCommandOptions) {
  41. const external = rawCommandOptions.external && typeof rawCommandOptions.external === 'string'
  42. ? rawCommandOptions.external.split(',')
  43. : [];
  44. return {
  45. ...rawCommandOptions,
  46. external,
  47. globals: typeof rawCommandOptions.globals === 'string'
  48. ? rawCommandOptions.globals.split(',').reduce((globals, globalDefinition) => {
  49. const [id, variableName] = globalDefinition.split(':');
  50. globals[id] = variableName;
  51. if (external.indexOf(id) === -1) {
  52. external.push(id);
  53. }
  54. return globals;
  55. }, Object.create(null))
  56. : undefined
  57. };
  58. }
  59. function mergeInputOptions(config, overrides, defaultOnWarnHandler) {
  60. const getOption = (name) => { var _a; return (_a = overrides[name]) !== null && _a !== void 0 ? _a : config[name]; };
  61. const inputOptions = {
  62. acorn: getOption('acorn'),
  63. acornInjectPlugins: config.acornInjectPlugins,
  64. cache: config.cache,
  65. context: getOption('context'),
  66. experimentalCacheExpiry: getOption('experimentalCacheExpiry'),
  67. external: getExternal(config, overrides),
  68. inlineDynamicImports: getOption('inlineDynamicImports'),
  69. input: getOption('input') || [],
  70. manualChunks: getOption('manualChunks'),
  71. moduleContext: getOption('moduleContext'),
  72. onwarn: getOnWarn(config, defaultOnWarnHandler),
  73. perf: getOption('perf'),
  74. plugins: rollup.ensureArray(config.plugins),
  75. preserveEntrySignatures: getOption('preserveEntrySignatures'),
  76. preserveModules: getOption('preserveModules'),
  77. preserveSymlinks: getOption('preserveSymlinks'),
  78. shimMissingExports: getOption('shimMissingExports'),
  79. strictDeprecations: getOption('strictDeprecations'),
  80. treeshake: getObjectOption(config, overrides, 'treeshake'),
  81. watch: getWatch(config, overrides, 'watch')
  82. };
  83. rollup.warnUnknownOptions(config, Object.keys(inputOptions), 'input options', inputOptions.onwarn, /^output$/);
  84. return inputOptions;
  85. }
  86. const getExternal = (config, overrides) => {
  87. const configExternal = config.external;
  88. return typeof configExternal === 'function'
  89. ? (source, importer, isResolved) => configExternal(source, importer, isResolved) || overrides.external.indexOf(source) !== -1
  90. : rollup.ensureArray(configExternal).concat(overrides.external);
  91. };
  92. const getOnWarn = (config, defaultOnWarnHandler) => config.onwarn
  93. ? warning => config.onwarn(warning, defaultOnWarnHandler)
  94. : defaultOnWarnHandler;
  95. const getObjectOption = (config, overrides, name) => {
  96. const commandOption = normalizeObjectOptionValue(overrides[name]);
  97. const configOption = normalizeObjectOptionValue(config[name]);
  98. if (commandOption !== undefined) {
  99. return commandOption && { ...configOption, ...commandOption };
  100. }
  101. return configOption;
  102. };
  103. const getWatch = (config, overrides, name) => config.watch !== false && getObjectOption(config, overrides, name);
  104. const normalizeObjectOptionValue = (optionValue) => {
  105. if (!optionValue) {
  106. return optionValue;
  107. }
  108. if (Array.isArray(optionValue)) {
  109. return optionValue.reduce((result, value) => value && result && { ...result, ...value }, {});
  110. }
  111. if (typeof optionValue !== 'object') {
  112. return {};
  113. }
  114. return optionValue;
  115. };
  116. function mergeOutputOptions(config, overrides, warn) {
  117. const getOption = (name) => { var _a; return (_a = overrides[name]) !== null && _a !== void 0 ? _a : config[name]; };
  118. const outputOptions = {
  119. amd: getObjectOption(config, overrides, 'amd'),
  120. assetFileNames: getOption('assetFileNames'),
  121. banner: getOption('banner'),
  122. chunkFileNames: getOption('chunkFileNames'),
  123. compact: getOption('compact'),
  124. dir: getOption('dir'),
  125. dynamicImportFunction: getOption('dynamicImportFunction'),
  126. entryFileNames: getOption('entryFileNames'),
  127. esModule: getOption('esModule'),
  128. exports: getOption('exports'),
  129. extend: getOption('extend'),
  130. externalLiveBindings: getOption('externalLiveBindings'),
  131. file: getOption('file'),
  132. footer: getOption('footer'),
  133. format: getOption('format'),
  134. freeze: getOption('freeze'),
  135. globals: getOption('globals'),
  136. hoistTransitiveImports: getOption('hoistTransitiveImports'),
  137. indent: getOption('indent'),
  138. inlineDynamicImports: getOption('inlineDynamicImports'),
  139. interop: getOption('interop'),
  140. intro: getOption('intro'),
  141. manualChunks: getOption('manualChunks'),
  142. minifyInternalExports: getOption('minifyInternalExports'),
  143. name: getOption('name'),
  144. namespaceToStringTag: getOption('namespaceToStringTag'),
  145. noConflict: getOption('noConflict'),
  146. outro: getOption('outro'),
  147. paths: getOption('paths'),
  148. plugins: rollup.ensureArray(config.plugins),
  149. preferConst: getOption('preferConst'),
  150. preserveModules: getOption('preserveModules'),
  151. preserveModulesRoot: getOption('preserveModulesRoot'),
  152. sourcemap: getOption('sourcemap'),
  153. sourcemapExcludeSources: getOption('sourcemapExcludeSources'),
  154. sourcemapFile: getOption('sourcemapFile'),
  155. sourcemapPathTransform: getOption('sourcemapPathTransform'),
  156. strict: getOption('strict'),
  157. systemNullSetters: getOption('systemNullSetters'),
  158. validate: getOption('validate')
  159. };
  160. rollup.warnUnknownOptions(config, Object.keys(outputOptions), 'output options', warn);
  161. return outputOptions;
  162. }
  163. exports.commandAliases = commandAliases;
  164. exports.mergeOptions = mergeOptions;
  165. //# sourceMappingURL=mergeOptions.js.map