From ffc6a72045ce7754992ba33ccd4339afcb1fc47e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hua=CC=81ng=20Ju=CC=80nlia=CC=80ng?= Date: Tue, 9 Jul 2019 19:04:45 -0400 Subject: [PATCH] docs: rewrite validate error message per https://github.com/babel/babel/pull/10181#discussion_r301607986 --- packages/babel-core/src/config/full.js | 13 +++++++++++-- packages/babel-core/test/config-chain.js | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/babel-core/src/config/full.js b/packages/babel-core/src/config/full.js index eba908c2566e..5ba198d91d17 100644 --- a/packages/babel-core/src/config/full.js +++ b/packages/babel-core/src/config/full.js @@ -284,9 +284,18 @@ const validateIfOptionNeedsFilename = ( descriptor: UnloadedDescriptor, ): void => { if (options.test || options.include || options.exclude) { + const formattedPresetName = descriptor.name + ? `"${descriptor.name}"` + : "/* your preset */"; throw new Error( - `Preset ${descriptor.name || - ""} requires filename, but it was not passed.`.replace(/\s{2}/, " "), + [ + `Preset ${formattedPresetName} requires a filename be set.`, + `For example, if you are calling Babel directly`, + `\`\`\``, + `babel.transform(code, { filename: 'file.js', presets: [${formattedPresetName}] });`, + `\`\`\``, + `See https://babeljs.io/docs/en/options#filename for more information.`, + ].join("\n"), ); } }; diff --git a/packages/babel-core/test/config-chain.js b/packages/babel-core/test/config-chain.js index 7aacbe62d1e9..f1f67d430327 100644 --- a/packages/babel-core/test/config-chain.js +++ b/packages/babel-core/test/config-chain.js @@ -1061,7 +1061,7 @@ describe("buildConfigChain", function() { loadOptions({ presets: [require("./fixtures/config-loading/preset4")], }); - }).toThrow(/Preset requires filename/); + }).toThrow(/Preset \/\* your preset \*\/ requires sa filename/); }); it("should throw when `preset.overrides` requires `filename` but it was not passed", () => { @@ -1069,7 +1069,7 @@ describe("buildConfigChain", function() { loadOptions({ presets: [require("./fixtures/config-loading/preset5")], }); - }).toThrow(/Preset requires filename/); + }).toThrow(/Preset \/\* your preset \*\/ requires a filename/); }); }); });