reactjs / reactjs/react-docgen

Can't reuse Babel plugins from Storybook

Offen
#982 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
TypeScript
Sterne
3.8k
Forks
316
Ø Merge
5 Std. 7 Min.
Gemergte PRs (30 T.)
4

Beschreibung

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"
	],
}

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, .storybook/main.js, .babel.config.js und craco.config.js zu vergleichen, um festzustellen, welche Babel-Konfiguration react-docgen erhält. Reproduziere den Parsing-Fehler des Pipeline-Operators in einem öffentlichen oder minimalen Setup und überprüfe anschließend, dass die Storybook-Dokumentationsgenerierung die konfigurierte Proposal und das Topic-Token berücksichtigt, ohne widersprüchliche Konfiguration.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, typescript, webpack
Bereich
documentation, tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.