Delete undefined options so we handle old core versions with new CLI versions. (#8728)

This commit is contained in:
Logan Smyth 2018-09-19 08:56:40 -07:00 committed by GitHub
parent 9e7c7f5683
commit 3b0f9a9f1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -221,36 +221,47 @@ export default function parseArgv(args: Array<string>) {
const opts = commander.opts(); const opts = commander.opts();
return { const babelOptions = {
babelOptions: { presets: opts.presets,
presets: opts.presets, plugins: opts.plugins,
plugins: opts.plugins, rootMode: opts.rootMode,
rootMode: opts.rootMode, configFile: opts.configFile,
configFile: opts.configFile, envName: opts.envName,
envName: opts.envName, sourceType: opts.sourceType,
sourceType: opts.sourceType, ignore: opts.ignore,
ignore: opts.ignore, only: opts.only,
only: opts.only, retainLines: opts.retainLines,
retainLines: opts.retainLines, compact: opts.compact,
compact: opts.compact, minified: opts.minified,
minified: opts.minified, auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
auxiliaryCommentBefore: opts.auxiliaryCommentBefore, auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
auxiliaryCommentAfter: opts.auxiliaryCommentAfter, sourceMaps: opts.sourceMaps,
sourceMaps: opts.sourceMaps, sourceFileName: opts.sourceFileName,
sourceFileName: opts.sourceFileName, sourceRoot: opts.sourceRoot,
sourceRoot: opts.sourceRoot, moduleRoot: opts.moduleRoot,
moduleRoot: opts.moduleRoot, moduleIds: opts.moduleIds,
moduleIds: opts.moduleIds, moduleId: opts.moduleId,
moduleId: opts.moduleId,
// Commander will default the "--no-" arguments to true, but we want to // Commander will default the "--no-" arguments to true, but we want to
// leave them undefined so that @babel/core can handle the // leave them undefined so that @babel/core can handle the
// default-assignment logic on its own. // default-assignment logic on its own.
babelrc: opts.babelrc === true ? undefined : opts.babelrc, babelrc: opts.babelrc === true ? undefined : opts.babelrc,
highlightCode: highlightCode: opts.highlightCode === true ? undefined : opts.highlightCode,
opts.highlightCode === true ? undefined : opts.highlightCode, comments: opts.comments === true ? undefined : opts.comments,
comments: opts.comments === true ? undefined : opts.comments, };
},
// If the @babel/cli version is newer than the @babel/core version, and we have added
// new options for @babel/core, we'll potentially get option validation errors from
// @babel/core. To avoid that, we delete undefined options, so @babel/core will only
// give the error if users actually pass an unsupported CLI option.
for (const key of Object.keys(babelOptions)) {
if (babelOptions[key] === undefined) {
delete babelOptions[key];
}
}
return {
babelOptions,
cliOptions: { cliOptions: {
filename: opts.filename, filename: opts.filename,
filenames, filenames,