Skip to content

manage project structure with CLI #58

Closed as not planned
Closed as not planned

Description

@pi0

This is a superset of #57 and a requirement of devtools vision.

Nuxt heavily depends on filesystem structure to configure project. As a result, we introduce filesystem entities such as pages, components, composables and plugins.

However, it is not easy to manage such entities. Creating a page, see what components are scanned, what plugins are available, what pages are there and mapped to which routes, etc.

The idea is to expose entity namespaces from nuxi cli to manage these. Some examples:

nuxi pages add <name>
nuxi pages show
nuxi pages update /blog/* --meta title="Blog:"

nuxi plugins add <name>
nuxi plugins show
nuxi plugins disable <name>

nuxi composables show

Related: nuxi module * (https://github.com/nuxt/framework/discussions/569)

By exposing this functionality from CLI (and later an API service), they can be used both for CLI lovers and also nuxt devtools to easily manage entities without duplicating logic.

Roadmap:

  • Scaffold shortcuts for nuxi add <template> <name> as nuxi <template> add <name>
  • Implement show for each
  • Update utilities - penging unjs template (@pi0) (meanwhile ideas welcome)
  • Wait for devtools to share vision and next steps

Entities we can start with:

  • component
  • composable
  • layout
  • middleware
  • page
  • plugin
  • api

Activity

  1. atinux commented on Mar 25, 2022

    @atinux
    Member

    One note for shortcuts: api and middleware won't take an s (nuxi middleware add auth).

    I really like the idea, how and where would you see the implementation?

  2. pi0 commented on Mar 25, 2022

    @pi0
    MemberAuthor

    One note for shortcuts: api and middleware won't take an s (nuxi middleware add auth).

    indeed :) Update generic comment

    how and where would you see the implementation?

    Nothing is stopping to implement shortcuts for <entity> add and then <entity> show commands. We can have a new nuxi subcommand for each entity like nuxi/src/commands/pages.ts and a utility as nuxi/src/entity/pages.ts that holds implementation.

    Next step, we need a proper utility from unjs, especially for modifications and properly test it before using it in cli. In the meantime, ideas more than welcome about what updates we could imagine. For me, could imagine adding static page meta and rename (apart from config modification. it is out of scope)

    The rest needs a poc of devtools and CLI api service.

  3. Diizzayy commented on Mar 25, 2022

    @Diizzayy
    Member

    @pi0 @atinux I'll begin working on the underlying implementation for entity shortcuts nuxi <entity> <add/show>

    The unjs templating util will be an integral part of way forward ( ie: proper testing and extension ) so it'll be interesting to see how we can best construct a robust solution!

  4. mlcsthor commented on Mar 27, 2022

    @mlcsthor

    Do you think it would be possible to add a custom template system? For example add this in the Nuxt config:

    templates : {
      custom: {
        dir: <target dir>,
        file: <template file>  // or take a file with the same name in a new templates directory
      }
    }

    and then run nuxi add custom MyCustom

  5. transferred this issue fromnuxt/frameworkon Jan 19, 2023
  6. transferred this issue fromnuxt/nuxton Jul 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions