Can't reuse Babel plugins from Storybook

未关闭
#982 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
javascript, typescript, webpack

调研方向

首先比较 .storybook/main.js、.babel.config.js 和 craco.config.js,以确定 react-docgen 接收的是哪项 Babel 配置。在公开或最小化设置中重现 pipeline 操作符解析失败,然后验证 Storybook 文档生成是否遵循已配置的 proposal 和 topic token,且不存在相互冲突的配置。

由索引模型根据 Issue 内容生成。

描述

I'm trying hard to add Storybook to a CRA(CO) app with some custom Babel plugins, but no matter what I do, I get complaints from react-docgen, stating there's no proposal for the pipeline operator:

WARN Failed to parse [...]/src/utils/Alerts.js with react-docgen. Please use the below error message and the content of the file which causes the error to report the issue to the maintainers of react-docgen. https://github.com/reactjs/react-docgen
SyntaxError: ./src/utils/Alerts.js: Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option. (21:60)

  19 |  }
  20 |
> 21 |  static #find = id => store.getState() |> getAlerts |> find(#, { id })
     |                                                             ^
  22 |

Unfortunately, this is a private project, so I can't provide reproducible examples :(
But I hope someone can find some jarring issue on the config files below, or any other idea brighter than Perplexity Pro could give me through the whole afternoon and night of this day.... 😞
I couldn't find a way to try to feed Babel configs directly to react-docgen without duplicating the Babel plugins and causing other issues.

Storybook version is 7.6.20 (because we're stuck in Node v16 for a while), but react-docgen is 7.1.1.

//craco.config.js
const webpack = require('webpack')

module.exports = {
	babel: { loaderOptions: { configFile: true } },
	webpack: {
		configure: (webpackConfig) => {
			webpackConfig.module.rules.push({
				test: /\.pem$/i,
				type: 'asset/source',
			})
			return webpackConfig
		},
		plugins: {
			add: [
				new webpack.DefinePlugin({ __SENTRY_DEBUG__: false })
			],
		},
	},
}
//.storybook/main.js
/** @type { import('@storybook/react-webpack5').StorybookConfig } */
export default {
  stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/preset-create-react-app",
    "@storybook/addon-onboarding",
    "@storybook/addon-interactions",
  ],
  framework: {
    name: "@storybook/react-webpack5",
    options: {
      builder: { useSWC: false },
    },
  },
	// typescript: { reactDocgen: false }, //no clue why, but this can't get the correct pipelineOperator settings from Babel
	babel: config => ({
		...config,
		loaderOptions: {
			...config.loaderOptions,
			configFile: true
		},
	}),
  docs: {
    autodocs: "tag",
  },
  staticDirs: ["../public"],
};
//.babel.config.js
module.exports = {
	'plugins': [
		'@babel/plugin-proposal-do-expressions',
		'@babel/plugin-transform-class-static-block',
		['@babel/plugin-proposal-pipeline-operator', { proposal: 'hack', topicToken: '#' }],

		//future ideas in case they seem useful
//            "@babel/plugin-proposal-throw-expressions"
//            "@babel/plugin-proposal-export-default-from"
	],
}
主要语言
TypeScript
星标
3.8k
派生
316
平均合并
5 小时 7 分钟
30 天内合并 PR
4

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

reactjs/react-docgen 的其他 Issue

查看 reactjs/react-docgen 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。