-
Notifications
You must be signed in to change notification settings - Fork 15
chore: tag packages with shared/core/plugin/tooling and set dep constraints #87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Why are you creating a "shared" tag? Isn't "utils" and "models" already a common way to structure a project? I also don't think the CLI should be importing from "utils". Doing this means that the cli depends directly on the implementations in utils. Currently it is only importing a couple of things which probably should be in core. For example Same with |
My thinking was to separate What you're suggesting would require even more granularity in the tags. Basically, every package would need to have it's own dedicated tag, except for plugins. In other words, instead of:
we would have:
I originally wanted to avoid having many unique tags. I've previously thought of tags as a way to group projects by different dimensions ( |
The fact that we do not have the typical Apps, Lib structure, the CLI is an application and the rest are libs.
I think you approach is great and i'm overthinking things. I think is ready to merge, improves the codebase and is a step in the write direction. But also i had a conversation with lars about tagin and lib types and what he said makes sense. We need to document things and make clear definitions. He also gave me this nice example. I am not suggesting this is a priority for now. I am suggesting that once we get a better understanding of what makes sense for out style we add some nice docs. |
Yeah, it's quite possible we will be wiser about the project boundaries later on, so I'm all for going with a simple version for now and extending it later once it's clearer what we need. Adding it to the project README is a good idea 👍 I'm happy to do that in this PR, or in a follow-up if you prefer (it's about time we replaced the generated Nx README anyway). I really like the Greenforce monorepo example you shared, though 🙂 I've used the same 2D tags system suggested by Nx for several application monorepos (the portal also uses it), and this has even more types of libraries that could be useful. Unfortunately, I don't think a lot of them make sense for this repo, which is a lot smaller and simpler (and doesn't really have distinguishable UI, state, or backend layers). But it got me thinking if we couldn't apply some of it after all 🤔 I would consider the tags I introduced to be
What do you think? |
I like your idea with the two dimensions, I think that what you currently have in that type should be what this MR ships. Potentially i would change one detail. The cli is an application, maybe is should have the tag I think that we should push the writing of the documentation to another MR and merge this one when you think its ready. Note I am not convinced that what i have noted from here on down makes any sense. I am writing down my thought here incase they do make sense (Probably Not?). Also this is not the priority so we should not think to much about this at the moment. Applications
Library types
Notes Again here i am making the distinction that the cli is an application, not a library. By defining the The result would be this:
|
@ChristopherPHolder OK, I've made some changes based on what makes sense at this time. I recommended taking a look at the updated PR description. I introduced the 2D tagging, although I just went with types I didn't go with I agree with |
Closes #28
Inspired by discussion in #75
Nx tags and project graph (updated)
Excalidraw link