react-docgen icon indicating copy to clipboard operation
react-docgen copied to clipboard

original parserOptions not getting passed to traversed files. Intentional?

Open krosenberg opened this issue 3 years ago • 0 comments

I'm using react-docgen@next on a project that uses Flow, and I'm utilizing the new makeFsImporter importer to be able to parse imported types. Here's my setup:

value = docgen.parse(source, null, null, {
  importer: docgen.importers.makeFsImporter(),
  filename: path,
  parserOptions: {
    plugins: [
      'jsx',
      'flow',
      'nullishCoalescingOperator',
      'objectRestSpread',
      'optionalCatchBinding',
      'optionalChaining',
      'classProperties',
      'classPrivateProperties',
      'classPrivateMethods',
    ],
  },
});

I am passing parserOptions because the .babelrc that react-docgen finds is not the one I want it to use (it doesn't contain the flow plugin). I noticed that the parserOptions get applied correctly to the original file, but for other files that are traversed, parserOptions are ignored:

https://github.com/reactjs/react-docgen/blob/master/src/importer/makeFsImporter.js#L70

This causes a SyntaxError when traversed files with imported types are parsed because it reverts to the .babelrc that I was avoiding by specifying parserOptions.plugins.

Is the line in makeFsImporter that sets parserOptions: {} intentional? Or can it be removed so that parserOptions specified in the original parse call are applied to other files? I'm happy to open a PR if so.

EDIT: I found a similar question asked when this code was introduced: https://github.com/reactjs/react-docgen/pull/352/files/8c0a15fcae4053b1d2115bd7dbd24252cf70b228#r287538448.

krosenberg avatar Sep 15 '21 20:09 krosenberg