描述bug
如果我在下一个babel配置中有条件配置,如include
或exclude
,那么这些行总是匹配到[root]/__fake__.js
。
这种情况发生在以下代码中:
storybook/code/frameworks/nextjs/src/preset.ts
第59行至第69行的3a1e61c
| | exportconstbabel: PresetProperty<'babel'>=async(baseConfig: TransformOptions)=>{ |
| | constconfigPartial=loadPartialConfig({ |
| | ...baseConfig, |
| | filename: ${getProjectRoot()}/__fake__.js
, |
| | }); |
| | |
| | constoptions=configPartial?.options; |
| | |
| | constisPresetConfigItem=(preset: any): preset is ConfigItem=>{ |
| | returntypeofpreset==='object'&&preset!==null&&'file'inpreset; |
| | }; |
复现链接
https://stackblitz.com/edit/github-iecdof?file=babel.config.js
复现步骤
- 打开故事按钮。
- 在控制台中查看async/await被转译,尽管我覆盖了babel-env为现代版本。
3条答案
按热度按时间lb3vh1jj1#
要解决条件性Babel配置(如
include
和exclude
)被忽略的问题,请修改preset.ts
中的babel
函数以正确处理这些条件。具体来说,更新loadPartialConfig
调用以尊重来自baseConfig
的原始filename
。export const babel: PresetProperty<'babel'> = async (baseConfig: TransformOptions) => {
const configPartial = loadPartialConfig({
...baseConfig,
// Use the original filename from baseConfig instead of a fake one
filename: baseConfig.filename ||
${getProjectRoot()}/__fake__.js
,});
const options = configPartial?.options;
// ... rest of the existing code
};
dfty9e192#
我可以处理这个吗?
4urapxun3#
当然可以!