Version dans package.json et composer.json
Sur de nouveaux projets, j'ai rencontré des problèmes entre jquery et bootstrap.js.
Principalement Collapse qui ne fonctionne plus !
Laravel est fourni avec un fichier package.json
Il utilise la nomenclature :
"devDependencies": {
...
"jquery": "^3.2",
...
jQuery vient de passer en version 3.5 et avec la syntaxe native de Laravel, npm install installe la nouvelle version de jQuery (3.5).
Il y a un bug entre jQuery 3.5 et bootstrap.js (v4.4), la fonction collapse utilisé sur le menu mobile (hamburger), accordéon... est inactive et une erreur est présente en console. Message d'erreur :
Uncaught TypeError: Cannot convert object to primitive value
J'en profite donc pour publier un petit topo concernant la syntaxe à utiliser dans le fichier package.json. Syntaxe qui vaut aussi pour le fichier composer.json
Le code ci-dessous installera exactement la version renseignée (soit jQuery en version 3.4.0)
"jquery": "3.4.0"
Les codes ci-dessous auront le même résultat, ils installeront jQuery en version 3.4 avec ses mises à jours mineures (3.4.0, 3.4.1, 3.4.2... jQuery ne passera pas en version 3.5)
"jquery": "3.4.*"
OU
"jquery": "~3.4.0"
Le code ci-dessous installera jQuery 3.4 avec màj de la version secondaire (3.4.0, 3.4.1, 3.4.2... 3.5.0, 3.9.0... ne passera pas à 4.0.0).
"jquery": "^3.4.0"
C'est la nomenclature présente dans le fichier package.json fournis par Laravel, qui aujourd'hui installera jQuery 3.5 et provoquera des bugs avec le JS de Bootstrap 4