Як сказати JSLint / JSHint, які глобальні змінні вже визначені


79

У моєму проекті ми маємо кілька глобальних змінних, які працюють як контейнери:

MyProject.MyFreature.someFunction = function() { ... }

Тоді я використовую цей сценарій на сайті, і JSLint / JSHint скаржиться на це:

"MyProject" не визначено

Я знаю, що можу перейти до кожного файлу JavaScript і додати коментар /*global MyProject*/поверх нього. Але я шукаю спосіб визначити цей коментар у якомусь конфігураційному файлі, тому мені не потрібно переходити до кожного файлу, додаючи цей коментар.

Якийсь варіант на варіант config/jshint.ymlбуло б непогано.


Чи використовуєте ви веб-програми (наприклад, jshint.com ) чи запускаєте їх із node?
RobH

Я використовую для запуску як завдання з граблями. Насправді я використовую jshint_on_rails
Еміліано Зілоччі

Це пояснює файл 'config / jshint.yml', про який я не чув.
RobH

Відповіді:


81

Для JSHint ви можете створити .jshintrcкаталог вашого проекту за допомогою

{
  "globals": { "MyProject": true }
}

2
Дякую. Але оскільки я використовую jshint_on_rails, я можу просто встановити цю опцію: predef: 'MyProject' на config / jshint.yml
Emiliano Zilocchi

Ви мали б це згадати у своєму питанні :)
Епелі,

Ви маєте рацію, я пропустив цю частину. Я буду мати на увазі наступний раз. Дякую
Еміліано Зілоччі

11
Лише невелика примітка щодо використання цього: покладіть falseдля бібліотек, таких як angularі $. Але покладіть це на trueглобальні, які ви хочете перевизначити, наприклад myApp.
polyclick

57

Це лише для глобальних компаній

/* global MyProject */

У вашому випадку вам потрібно

/* exported MyProject */

1
це хороша відповідь, якщо ви працюєте з одним файлом JavaScript, дякую!

4

JSLint має текстове поле нижче параметрів, що predefine global variables hereв ньому вказані . Просто додайте туди імена змінних перед запуском перевірки.

JSHint не дозволяє додавати глобальні змінні, але ви можете зняти прапорець, When variable is undefinedщоб придушити це попередження.

Бібліотека JSHint також має параметри для глобалів, якщо ви запускаєте її як бібліотеку. . . деталі тут: http://jshint.com/docs/


Це не схоже на те, що вони використовують веб-інтерфейс - But I'm looking a way to define that comment in some sort of config file so I don't have to go file by file adding this comment.іSome kind on option in the config/jshint.yml would be nice
Ян

1
Я щойно знайшов його, атрибут 'predef' у config / jshint.yml. це атрибут, відокремлений комами. Дякую!
Emiliano Zilocchi

1
Варто згадати, що predef існує і в JSLint .
jorffin

З огляду на Visual Studio 2013 з Web Essentials та звичайною ієрархією папок рішення та підпапок проекту, ви можете помістити його в кореневу папку рішення.
Джордж

Незаслужені голоси проти. Питання не дало зрозуміти, що Rails використовувались лише після того, як цю відповідь залишили. +1
надсвітлий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.