Skip to content

[Reusable Bundle] Multiple controllers directories #83

Open
@cavasinf

Description

@cavasinf

note
There is no "discussion" enabled on this repo, so I am creating an issue to ask questions.

Question

Is there a way to add multiple controllers directories and import them automatically?

Context

We have an internal reusable bundle to share logic between ours Symfony projects.

Here is the structure:

namespace path
Bundle lib/my-bundle/assets/controllers
App assets/controllers

What should be a good approach

1.In the App controller.json add a way to import other bootstrap.js
Like:

  {
      "controllers": [ ],
      "entrypoints": [
          "../lib/my-bundle/assets/bootstrap.js"
      ]
  }

2.Add multiple context when calling a startStimulusApp

export function startStimulusApp(context: __WebpackModuleApi.RequireContext) {

What I have tried

Looking at Symfony UX how they import controllers, it uses packages.json.
Trying to make it work for our reusable bundle I've ended up like this:

// lib/my-bundle/package.json
{
  "name": "@my-bundle/standard",
  "main": "assets/controllers/controller.js",
  "types": "assets/controllers/controller.d.ts",
  "symfony": {
    "controllers": {
      "user-form": {
        "main": "assets/controllers/user-form_controller.ts",
        "webpackMode": "eager",
        "fetch": "eager",
        "enabled": true
      },
      "other-form": {
        //...
      },
      "another-form": {
        //...
      }
    }
  },
}

Problems

  1. Error at compile, ask to enable TypeScriptLoader or it is already the case

    warning
    Error loading ./node_modules/@my-bundle/standard/assets/controllers/user-form_controller.ts
    FIX To process TypeScript files:

    1. Add Encore.enableTypeScriptLoader() to your webpack.config.js file.
  2. We need to declare each controller is this file.

  3. In the app project import each controller inside the controller.json.

  4. We have to declare a main controller and types?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions