Esri / calcite-design-system

A monorepo containing the packages for Esri's Calcite Design System
https://developers.arcgis.com/calcite-design-system/
Other
285 stars 76 forks source link

Create additional packages/workspaces within the monorepo #7122

Open benelan opened 1 year ago

benelan commented 1 year ago

Summary

The initial monorepo PR is installed! Once we ensure everything is running smoothly, we can start splitting out some of the code in packages/calcite-components into separate workspaces. Turbo has an example project where they have separate workspaces for eslint, tsconfig, and storybook. We could potentially split the demo pages into its own workspace as well.

In addition to creating workspaces from existing code in the monorepo, we can start moving in packages from other repos. Here is a list copied from #6532:

Desired Outcome

Adding more Calcite packages to the repo and splitting existing functionality into encapsulated workspaces will improve maintainability and discoverability.

Resources

No response

driskull commented 1 year ago

@esri/calcite-ui-icons (potentially)

Seems like this would be good to be in the monorepo right? Anything calcite should be in this repo ideally.

benelan commented 1 year ago

Yeah I think Franco put the "potentially" there before he talked with @SkyeSeitz and the other maintainers. I just copied it from his list in the issue I linked. But last I heard we are on track to move the icons to the monorepo.

SkyeSeitz commented 1 year ago

Thanks, @benelan. Can you remind me of the impact so so I can confirm with the Graphic Illustration team on any updates to their workflow - if any? A url change? Any impacts on maintaining this site?

benelan commented 1 year ago

Yeah the code would be moved to this repo so they would need to get set up here with permissions etc. The github pages site would need to be moved as well

Edit: On the plus side it would mean they don't have to deal with the deployment side of things anymore

alisonailea commented 1 year ago

I'd like to propose we create a /configs folder at root for all shared configs (typescript, jest, eslint, etc.) and a /tools folder for shared tooling (tokens-transformer) these would need to be added as additional turbo workspaces to be usable by /packages

driskull commented 1 year ago

I'd like to propose we create a /configs folder at root for all shared configs (typescript, jest, eslint, etc.) and a /tools folder for shared tooling (tokens-transformer) these would need to be added as additional turbo workspaces to be usable by /packages

I like this idea but I'm not sure these kind of configurations fall into the design system. do they?

benelan commented 1 year ago

It would just be the shared configs for the design system. Here is an example of a shared eslint config from turbo: https://github.com/vercel/turbo/tree/main/examples/design-system/packages/eslint-config-acme

which can be installed and extended in other packages within the monorepo: https://github.com/vercel/turbo/blob/main/examples/design-system/packages/acme-core/package.json#L23 https://github.com/vercel/turbo/blob/main/examples/design-system/packages/acme-core/.eslintrc.js#L3

benelan commented 1 year ago

I'd like to propose we create a /configs folder at root for all shared configs (typescript, jest, eslint, etc.)

I started on this but ran into issues with the typescript parser. Here are some resources for when @alisonailea or I pick it back up: