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


Publication : mercredi 22 avril 2020 à 01:03
Mis à jour : mardi 28 avril 2020 à 12:06
Article vue 2050 fois

Version dans package.json et composer.json
Haut de page