web-dev-qa-db-fra.com

Demandez à jshint d'ignorer certains fichiers lors de la construction de Twitter Bootstrap

J'ai souvent ce problème lors de l'utilisation de Twitter Bootstrap avec d'autres bibliothèques JS tierces, telles que html5.js du thème "Twenty Twelve" de WordPress, où la construction échoue parce que jshint (ou jslint dans les versions précédentes de TB je pense) lève une erreur grâce à la bibliothèque JS tierce, par ex.

\n##################################################
Building Bootstrap...
##################################################\n
js/html5.js: line 3, col 122, Expected ')' to match '(' from line 3 and instead
  saw ','.
js/html5.js: line 3, col 140, Expected an identifier and instead saw ')'.
js/html5.js: line 4, col 101, eval is evil.
js/html5.js: line 6, col 369, Confusing use of '!'.
js/html5.js: line 6, col 422, Confusing use of '!'.
js/html5.js: line 7, col 61, 'b' is already defined.
js/theme-customizer.js: line 26, col 26, Use '===' to compare with ''.

7 errors
make: *** [build] Error 1

Je voudrais éviter de modifier des bibliothèques tierces ou de modifier le Makefile de TB, car cela posera des problèmes pour les mises à niveau à l'avenir; est ma seule option pour placer les fichiers JS tiers dans un dossier séparé.

Existe-t-il un moyen d'obtenir jshint ou le processus de génération de TB pour ignorer certains fichiers JS (peut-être par le biais de .jshintrc configuration dont je ne suis pas au courant?)?

39
Lèse majesté

Il existe donc une option pour ignorer les fichiers dans jshint, mais elle n'est pas définie dans .jshintrc mais plutôt un fichier séparé .jshintignore, ce qui est logique. Cependant, alors que jshint recherchera .jshintrc dans les sous-répertoires de votre projet, .jshintignore doit être à la racine du projet. Donc, avec Twitter Bootstrap, .jshintrc est dans /js tandis que .jshintignore doit être placé dans /.

Donc, pour résoudre le problème dans ma question /.jshintignore doit contenir:

js/html5.js
js/theme-customizer.js

Et c'est tout!

94
Lèse majesté

En complément de Lèse majesté réponse , on peut également écrire ces commentaires dans votre JS et jshint ignorera le code entre les deux:

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be linted with ignored by JSHint.
/* jshint ignore:end */

OU si vous souhaitez simplement que JSHint ne vérifie pas une seule ligne:

 // jshint ignore:line

Référence: jshint docs

34
Justin

La solution la plus simple pour moi est d'ajouter simplement // jshint ignore: start en haut du fichier que je veux ignorer

14
Ronnie