ladle icon indicating copy to clipboard operation
ladle copied to clipboard

Allow exports in `export` block

Open i-am-the-slime opened this issue 10 months ago • 5 comments

Is your feature request related to a problem? Please describe. I'm using ladle with PureScript and it almost works. It's just that the compiler output looks like this:

var someStory = /* #__PURE__ */ // some JS component

export {
    someStory
};

This leads to the following error:

TypeError: Cannot read properties of null (reading 'type')
    at getNamedExports (/node_modules/@ladle/react/lib/cli/vite-plugin/parse/get-named-exports.js:31:30)

If I manually change this to say export var someStory =... and remove the export block it works fine.

Interestingly, it keeps working from there on out (so even when the file gets overwritten)

Describe the solution you'd like I'd love for this to simply work without me having to change the output of the compiler.

Describe alternatives you've considered If there was a way to hook into the reading of files, I could probably fix this with some regex or something more bespoke that traverses the AST, so that could be an alternative. If that's something I could do with vite out of the box I'd be happy about any pointers.

i-am-the-slime avatar Apr 07 '24 17:04 i-am-the-slime

Valid request. We would need to add specifiers / ExportSpecifier here.

It's a different case from other ExportedNamedDeclarations.

Should be fairly straightforward if you want to open a PR.

tajo avatar Apr 09 '24 17:04 tajo

Would it be (easily) possible to also support StoryDefault exported in export block like:

var storyDefault = {
  title: "Custom Title"
};

export {
  hello_world ,
  storyDefault as default,
}

If this is not yet covered by #556, would anybody have some pointers on what needs to be done to support it?

woeps avatar Apr 25 '24 15:04 woeps

@woeps have you tried my branch? There's a test you can probably modify and see if it works already

i-am-the-slime avatar May 02 '24 08:05 i-am-the-slime

@i-am-the-slime I tried your branch locally and it seems StoryDefault in export block is not supported yet. I haven't tinkered with any tests: Do you mean the tests in packages/ladle/tests/parse/get-storyname-and-meta.test.ts?

woeps avatar May 06 '24 22:05 woeps

@woeps I mean this one on my fork/branch:

https://github.com/tajo/ladle/blob/e75b7615f1e6748f25d822d1c466d6a6bcac2469/packages/ladle/tests/parse/get-named-exports.test.ts#L287

i-am-the-slime avatar May 07 '24 13:05 i-am-the-slime