Skip to content

Self-hosting the project / dog-fooding #120

Closed as not planned
Closed as not planned
@sebinsua

Description

@sebinsua

We should self-host the project and generally dog-food any code that we write within the project.

The philosophical reason for this would be to "taste one's own medicine" but the practical reasons are much stronger:

  • The only way we have to test everything right now is to publish it and then consume the packages as part of an E2E process. This is a very, very slow feedback loop -- and more fragile than I'd like on environment differences or incorrectly written tests, etc.
    • If you're writing test configuration or changing lint rules, we should be able to test these with our own yarn test or yarn lint command in only a few seconds, for example.
    • There should be a way to quickly create a Modular project and app from within this repository. We have all of the logic required to do so within the tests (here and here). There's nothing stopping us from pulling this out into a script that a developer can quickly run within the project.
      • Potentially we could also have a packages/app (marked as "private": true) within the project which would mean people could test changes to modular-scripts without any tiresome initialisation of a new project.
  • Actually, the E2E process itself is slow because there are multiple yarn installs involved in executing create-modular-react-app. Elsewhere we talk about caching yarn installs but we don't do that here which is why these tests take 6+ minutes to run, instead of taking < 1 minute.
    • If we have a performance problem within the project, it makes sense that we should use whatever techniques are appropriate to fix the problem. That would also be a good test that our tools and instructions related to this are good.
  • It's quite weird that we're using different Jest/Lint configurations in this project than the ones we use in the output project. I think this was accidental and we should fix it.
  • We have dependencies within our root package.json which should actually belong to our packages.

This doesn't need to be done immediately: I'm just getting my thoughts down.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions