Имейте jshint игнорировать определенные файлы при создании Twitter Bootstrap
У меня часто возникает эта проблема при использовании Twitter Bootstrap с другими сторонними JS-библиотеками, такими как html5.js
из темы Wordpress "Twenty Twelve", где сборка не выполняется, потому что jshint
(или jslint
в предыдущих версиях TB, я думаю) выдает ошибку из-за сторонней JS-библиотеки, например
\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
Я бы хотел избежать модификации сторонних библиотек или изменить TB Makefile, поскольку это вызовет проблемы для обновлений в будущем; мой единственный вариант поместить сторонние JS файлы в отдельную папку.
Есть ли способ заставить процесс сборки jshint или TB игнорировать некоторые JS файлы (возможно, через некоторую конфигурацию .jshintrc
, о которой я не знаю?)?
Ответы
Ответ 1
Итак, есть возможность игнорировать файлы в jshint, но он не установлен в .jshintrc
, а является отдельным файлом .jshintignore
, что имеет смысл. Однако, хотя jshint будет искать .jshintrc
в ваших подкаталогах проекта, .jshintignore
должен быть в корне проекта. Итак, с помощью Twitter Bootstrap .jshintrc
находится в /js
, а .jshintignore
необходимо поместить в /
.
Поэтому для решения проблемы в моем вопросе /.jshintignore
необходимо указать:
js/html5.js
js/theme-customizer.js
И что это!
Ответ 2
В качестве дополнения к Lèse majesté answer вы также можете написать эти комментарии в своем JS, а jshint будет игнорировать код между ними:
// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be linted with ignored by JSHint.
/* jshint ignore:end */
ИЛИ, если вы просто хотите, чтобы JSHint не проверял одну строку:
// jshint ignore:line
Ссылка: jshint docs
Ответ 3
Самое простое решение для меня - просто добавить // jshint ignore: start
в начало любого файла, который я хочу проигнорировать