Open gnapse opened 2 years ago
A proposal from @pawelgrimm (ref) is to switch away from publishing Reactist as an npm package, and leveraging shadcn's cli - which lives in https://github.com/shadcn/ui - allowing the Reactist source files to be copied into consumer codebases in an automated. way. This avoids having to rely on the "link" mechanism when dealing with local npm packages and docker.
Pros/cons:
- ๐ Much easier to customize
- ๐ No real build process needed in Reactist (shadcn already provides the script to โcompileโ the registry)
- ๐ Better DX (develop directly against todoist-web, then commit the same patch to Reactist)
- ๐ Worse upgrade experience (manually integrate updates from Reactist into todoist-web)
- ๐ Looser constraints (i.e. Reactist canโt impose any hard rules, they can be overridden easily within the consuming code)
To make this work, we'll have to enforce (whether automated or not) on the todoist-web side that Reactist source files are not to be manipulated, similar to how we treat other build artifacts like colour variables.
Next step: small PoC to demonstrate to the team how this works.
Thanks for summarizing that down, @frankieyan. It's really helpful.
About those cons.
Worse upgrade experience (manually integrate updates from Reactist into todoist-web)
Why is this exactly worse? Assuming we have a script to do it, it should not be too different from increasing a version number in package.json
and running npm install
. Or am I missing something?
Looser constraints (i.e. Reactist canโt impose any hard rules, they can be overridden easily within the consuming code)
I could see that as a positive, depending on how easily things can be overridden. As in "can they be inadvertently overridden easily?" or is it more like "they can be easily overridden, but doing it is explicit enough so that you are unlike to do it by accident".
By "overriding" you refer to what you talk about at the end, regarding the modification of the Reactist artifacts? If so, then I agree that we should do something to prevent that, and possibly we can do that. Or is the "overriding con" about other types of overrides?
โ๏ธ Why
๐บ Overview
โ Task Breakdown
Build Process
We want to unify and simplify our build process while making it faster if possible. This includes:
.less
while we still rely on it, as we gradually move away from it.Automated project life-cycle
Implement automation of versioning and release. This could be achieved drawing inspiration, for instance, from how
jest-dom
does it (powered internally bycycjimmy/semantic-release-action
).This includes:
main
trigger a new release fully automatically, including determining the new version.PR review process aids
๐ง Potential problems / unknowns
We may not be able to fit all this work within a single cycle (4-5 weeks).
The numbered list above is in order of priority. Hopefully all the checkboxes within each section are done, and no numbered section is left halfway, as they are more or less self-contained and all tasks within each are interconnected.
๐ฎ Out of scope / future improvements
๐ Related documents & discussion