Skip to content
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

Pefixing all Stimulus-related files with stimulus_ #1022

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion symfony/webpack-encore-bundle/1.9/assets/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
import './styles/app.css';

// start the Stimulus application
import './bootstrap';
import './stimulus_bootstrap';
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { startStimulusApp } from '@symfony/stimulus-bridge';

// Registers Stimulus controllers from controllers.json and in the controllers/ directory
export const app = startStimulusApp(require.context(
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers',
'@symfony/stimulus-bridge/lazy-controller-loader!./stimulus_controllers',
true,
/\.(j|t)sx?$/
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ import { Controller } from 'stimulus';
/*
* This is an example Stimulus controller!
*
* Any element with a data-controller="hello" attribute will cause
* this controller to be executed. The name "hello" comes from the filename:
* Any HTML element with a data-controller="hello" attribute will cause this controller to be executed. Example:
* <div data-controller="hello"></div>
* The name "hello" comes from the filename:
* hello_controller.js -> "hello"
*
* Delete this file or adapt it for your use!
*/
export default class extends Controller {
connect() {
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
this.element.textContent = 'Hello Stimulus! Edit me in assets/stimulus_controllers/hello_controller.js';
}
}
2 changes: 1 addition & 1 deletion symfony/webpack-encore-bundle/1.9/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Encore
.addEntry('app', './assets/app.js')

// enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js)
.enableStimulusBridge('./assets/controllers.json')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assets/controllers.json file is managed by Flex, so you cannot rename it here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK. So what can I do?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, either not renaming the controllers.json file, or first building a way to make this filename configurable in Flex to allow new projects to use the new name while existing projects would still use assets/controllers.json until they migrate.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Migrate? I was thinking these recipes here are a one-time installation "helper", and this is (more or less) what's called "Flex" ;-) But obviously there's more to it... So where is this Flex-thing ;-) configured?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flex is composer plugin, that installs recipes and manages a few files automatically (config/bundles.php and assets/controllers.json)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! It's coming from this line: https://github.com/symfony/flex/blob/main/src/PackageJsonSynchronizer.php#L111

So in order to make this change, both repos need to be updated simultaneously?

For existing users it shouldn't make a difference, cause the path in .enableStimulusBridge() (in webpack.config.js) overrides, right?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, for existing users, they need their Flex plugin to keep managing the assets/controllers.json file until the time they rename it. That's why I said it needs a migration strategy for the Flex plugin.

.enableStimulusBridge('./assets/stimulus_controllers.json')

// When enabled, Webpack "splits" your files into smaller pieces for greater optimization.
.splitEntryChunks()
Expand Down