It is impossible to use parcel with preact-compat because it requires being able to alias all references to 'react' and 'react-dom' to 'preact-compat'. It is possible to do this for local package using browser
in package.json
, but does not work when including external React components.
Add an alias field in, say, package.json
, like
"alias": {
"^react$": "preact-compat",
"react-dom$": "preact-compat",
"react-dom/server": "preact-compat/server"
}
Which would then replace all references to react
with preact-compat
etc.
Using browser
field, I can replace local import/requires successfully, but when importing, say react-apollo
, it doesn't replace there.
I know there was an issue #25 for this but it got locked and I haven't seen any further discussion about it, but this is quite inconvenient for people trying to use preact. I think it was a bad decision to completely delete all discussion about current workarounds as now people have no reference on what to do until this gets implemented natively.
The workaround I found is to make symbolic links in the node_modules
folder so that node_modules/react
and node_modules/react-dom
both link to node_modules/preact-compat
.
Would really love this. Parcel is very cool, but I've kind of screwed myself out of its use in the short term by using Webpack's aliasing so much.
See #850 for an implementation of aliases as part of our new resolver.
no work
Most helpful comment
See #850 for an implementation of aliases as part of our new resolver.