diff --git a/packages/babel-core/src/config/option-manager.js b/packages/babel-core/src/config/option-manager.js index 641440c353..0c4cd84ffa 100644 --- a/packages/babel-core/src/config/option-manager.js +++ b/packages/babel-core/src/config/option-manager.js @@ -163,17 +163,19 @@ class OptionManager { filenameRelative: opts.filename, }); - const basenameRelative = path.basename(opts.filenameRelative); + if (typeof opts.filenameRelative === "string") { + const basenameRelative = path.basename(opts.filenameRelative); - if (path.extname(opts.filenameRelative) === ".mjs") { - opts.sourceType = "module"; + if (path.extname(opts.filenameRelative) === ".mjs") { + opts.sourceType = "module"; + } + + defaults(opts, { + sourceFileName: basenameRelative, + sourceMapTarget: basenameRelative, + }); } - defaults(opts, { - sourceFileName: basenameRelative, - sourceMapTarget: basenameRelative, - }); - return { options: opts, passes: this.passes, @@ -461,7 +463,6 @@ function createInitialOptions() { return { sourceType: "module", babelrc: true, - filename: "unknown", code: true, ast: true, comments: true, diff --git a/packages/babel-core/src/transformation/file/generate.js b/packages/babel-core/src/transformation/file/generate.js index 39327d75dc..85b072e59b 100644 --- a/packages/babel-core/src/transformation/file/generate.js +++ b/packages/babel-core/src/transformation/file/generate.js @@ -24,7 +24,7 @@ export default function generateCode( Object.assign( { // General generator flags. - filename: opts.filename, + filename: opts.filename || "unknown", auxiliaryCommentBefore: opts.auxiliaryCommentBefore, auxiliaryCommentAfter: opts.auxiliaryCommentAfter, retainLines: opts.retainLines, @@ -35,9 +35,9 @@ export default function generateCode( // Source-map generation flags. sourceMaps: opts.sourceMaps, - sourceMapTarget: opts.sourceMapTarget, + sourceMapTarget: opts.sourceMapTarget || "unknown", sourceRoot: opts.sourceRoot, - sourceFileName: opts.sourceFileName, + sourceFileName: opts.sourceFileName || "unknown", }, opts.generatorOpts, ), diff --git a/packages/babel-core/src/transformation/normalize-file.js b/packages/babel-core/src/transformation/normalize-file.js index 72975a7951..c0722bb62e 100644 --- a/packages/babel-core/src/transformation/normalize-file.js +++ b/packages/babel-core/src/transformation/normalize-file.js @@ -70,7 +70,7 @@ function parser(options, code) { if (loc) { err.loc = null; err.message = - `${options.filename}: ${err.message}\n` + + `${options.filename || "unknown"}: ${err.message}\n` + codeFrameColumns( code, { diff --git a/packages/babel-core/src/transformation/normalize-opts.js b/packages/babel-core/src/transformation/normalize-opts.js index f9844de43e..591b6c4fbd 100644 --- a/packages/babel-core/src/transformation/normalize-opts.js +++ b/packages/babel-core/src/transformation/normalize-opts.js @@ -7,7 +7,7 @@ export default function normalizeOptions(config: ResolvedConfig): {} { parserOpts: Object.assign( { sourceType: config.options.sourceType, - sourceFileName: config.options.filename, + sourceFileName: config.options.filename || "unknown", plugins: [], }, config.options.parserOpts, diff --git a/packages/babel-core/src/transformation/plugin-pass.js b/packages/babel-core/src/transformation/plugin-pass.js index 000f7e4c62..c526d4256b 100644 --- a/packages/babel-core/src/transformation/plugin-pass.js +++ b/packages/babel-core/src/transformation/plugin-pass.js @@ -7,11 +7,14 @@ export default class PluginPass { key: ?string; file: File; opts: Object; + filename: string | void; constructor(file: File, key: ?string, options: ?Object) { this.key = key; this.file = file; this.opts = options || {}; + this.filename = + typeof file.opts.filename === "string" ? file.opts.filename : undefined; } set(key: mixed, val: mixed) { diff --git a/packages/babel-plugin-transform-modules-umd/src/index.js b/packages/babel-plugin-transform-modules-umd/src/index.js index de21197ffc..c806e8c3c6 100644 --- a/packages/babel-plugin-transform-modules-umd/src/index.js +++ b/packages/babel-plugin-transform-modules-umd/src/index.js @@ -44,10 +44,15 @@ export default function({ types: t }, options) { /** * Build the assignment statements that initialize the UMD global. */ - function buildBrowserInit(browserGlobals, exactGlobals, file, moduleName) { + function buildBrowserInit( + browserGlobals, + exactGlobals, + filename, + moduleName, + ) { const moduleNameOrBasename = moduleName ? moduleName.value - : basename(file.opts.filename, extname(file.opts.filename)); + : basename(filename, extname(filename)); let globalToAssign = t.memberExpression( t.identifier("global"), t.identifier(t.toIdentifier(moduleNameOrBasename)), @@ -204,7 +209,7 @@ export default function({ types: t }, options) { GLOBAL_TO_ASSIGN: buildBrowserInit( browserGlobals, exactGlobals, - this.file, + this.filename || "unknown", moduleName, ), }), diff --git a/packages/babel-plugin-transform-react-display-name/src/index.js b/packages/babel-plugin-transform-react-display-name/src/index.js index 6b5a0b5f90..3ed305380f 100644 --- a/packages/babel-plugin-transform-react-display-name/src/index.js +++ b/packages/babel-plugin-transform-react-display-name/src/index.js @@ -52,14 +52,13 @@ export default function({ types: t }) { visitor: { ExportDefaultDeclaration({ node }, state) { if (isCreateClass(node.declaration)) { - let displayName = path.basename( - state.file.opts.filename, - path.extname(state.file.opts.filename), - ); + const filename = state.filename || "unknown"; + + let displayName = path.basename(filename, path.extname(filename)); // ./{module name}/index.js if (displayName === "index") { - displayName = path.basename(path.dirname(state.file.opts.filename)); + displayName = path.basename(path.dirname(filename)); } addDisplayName(displayName, node.declaration); diff --git a/packages/babel-plugin-transform-react-jsx-source/src/index.js b/packages/babel-plugin-transform-react-jsx-source/src/index.js index 76a5cea1ee..d76aed50f8 100644 --- a/packages/babel-plugin-transform-react-jsx-source/src/index.js +++ b/packages/babel-plugin-transform-react-jsx-source/src/index.js @@ -50,7 +50,7 @@ export default function({ types: t }) { } if (!state.fileNameIdentifier) { - const fileName = state.file.opts.filename || ""; + const fileName = state.filename || ""; const fileNameIdentifier = path.scope.generateUidIdentifier( FILE_NAME_VAR,