symfony / ux

Symfony UX initiative: a JavaScript ecosystem for Symfony
https://ux.symfony.com/
MIT License
820 stars 297 forks source link

[StimulusBundle] Rename bootstrap.js to bootstrap-stimulus.js #1278

Open tacman opened 10 months ago

tacman commented 10 months ago

Given the ubiquity of the bootstrap framework, I find it confusing to have the script to integrating stimulus also called bootstrap.js.

My app.js usually looks like this

// stimulus
import './bootstrap.js';

// bootstrap 5
import 'bootstrap'; // bootstrap javascript
import 'bootstrap/dist/css/bootstrap.min.css'

It's so easy to get these confused, I think bootstrap-stimulus.js would be clearer. Also, it's generated by the recipe, so it's not even like its saving typing.

94noni commented 8 months ago

Had at work the same « wtf » moment with coworker when i introduced this package /file

boot_ux.js / init_ux.js / boot_app.js ?

naming can be « improved » to dissociate with bootstrap framework indeed :)

javiereguiluz commented 5 months ago

This is still confusing to me too.

If others face the same issue, we could revisit this and consider a name change.

smnandre commented 5 months ago

This is very "webpack-like"..

If we can find a way to do this with no BC / generating frustration, i'm all in to rename.... but i'd even think we could entirely remove it (and merge within app.js)

WDYT ?

tacman commented 5 months ago

I quite like the idea of moving it into app.js. If we were to do that, what about also renaming the app var to application, so it'd be more consistent with stimulus-components and the hotwired documentation

that is

import { Application } from '@hotwired/stimulus'

const application = Application.start()

I think the recipe should include

application.debug=true;

or false, but either way, make it explicit.

One potential downside to embedding the code in app.js is that if someone were to create a command that installs stimulus components, it'd be easier to automate initializing it. That is

bin/console importmap:require-stimulus timeago
# same as 
bin/console importmap:require stimulus-timeago
cat assets/stimulus-bootstrap.js

would install it as well.

import { startStimulusApp } from '@symfony/stimulus-bundle';
import Timeago from 'stimulus-timeago'

const application = startStimulusApp();
application.debug=true;
application.register('timeago', Timeago);