svelte-nodegui icon indicating copy to clipboard operation
svelte-nodegui copied to clipboard

Stop bundling source files from React NodeGUI

Open shirakaba opened this issue 3 years ago • 1 comments

We're currently bundling some of the source for React NodeGUI in src/dom/react-nodegui, rather than just importing build files from node_modules/react-nodegui.

There was a compelling reason for this, but unfortunately I've forgotten.

We use React NodeGUI in a few places:

  • To fill in the Svelte NodeGUI JSX Intrinsic typings: src/svelte-nodegui.ts
  • To implement RNObject src/dom/svelte/RNObject.ts, a basic DOM-conforming wrapper for all native elements (QObjects) that is not necessarily a visual element. e.g. we use it for the <head>, <style> and <template> elements as well as document, all found in src/dom/svelte. It's also referenced in src/dom/svelte-elements.ts, where each of those elements are registered.
  • src/dom/nativescript-vue-next/runtime, for providing proper typings when registering elements.
  • src/dom/svelte/SvelteNodeGUIDocument.ts to grab the RNWindow typing.

I think the reason for copying the source in may have simply been to avoid any coupling with the React side of React NodeGUI. For example, we need to reference src/dom/react-nodegui/src/components/config.ts, but that file in its original state imports from "react-reconciler". I wanted to avoid users having to install react-reconciler into their app bundle. I therefore decoupled that file from "react-reconciler" in this commit: https://github.com/nodegui/svelte-nodegui/commit/2acccb135fd50d0c4aa6f9300ce795047dac22fe#diff-1fecc56b01094743ee99d3d1c501a51a25634e2faeeb1a8aafbdc44bd7514263. I'm not sure I've made any other changes to the library otherwise (and have been careful not to, as it would make updates harder to manage).

I also recall that I had problems importing the built code, due to a mismatch between esm and commonjs modules.

shirakaba avatar Feb 06 '21 22:02 shirakaba

I've now decoupled the React NodeGUI sources from React. Ideally React NodeGUI itself would make similar changes in kind so that we could just import it directly.

https://github.com/nodegui/svelte-nodegui/commit/d553900d58e0f44fa577e91da4605d8ee97ad681

shirakaba avatar Feb 27 '21 18:02 shirakaba