Как настроить Web Essentials 2013 для игнорирования файлов?

У меня есть новый проект веб-приложения MVC 5.1 в VS 2013 (обновление 1) с установленным Web Essential 2013 (последнее на сегодняшний день). После сборки проекта Web Essentials сканирует файлы javascript и отправляет в окно вывода сообщения о любых найденных проблемах. Для совершенно нового проекта MVC 5.1 он генерирует более 11 000 сообщений, что не очень полезно.

Я пробовал два метода, чтобы заставить его игнорировать оскорбительные файлы javascript, которые по умолчанию включены в новые проекты MVC 5:

  1. Использовал команду Web Essentials > Edit Global JSCS Settings, чтобы открыть файл .jscs.json в каталоге моего профиля пользователя. Затем изменил свойство excludeFiles на ["test/data/.js", "Scripts/jquery.js"].

  2. Создал файл .jshintignore в папке «Мои скрипты» с «jquery*.js».

Ни один из этих методов не оказал никакого влияния на сгенерированные сообщения JSCS. Я делаю что-то не так, или это проблема с Web Essentials?


person Jim Lamb    schedule 01.02.2014    source источник
comment
Здесь та же проблема, за исключением того, что у меня тоже есть Kendo и Angular, поэтому я получаю 175 тысяч ошибок. Пробовал *.js в excludeFiles, но, похоже, ничего не делает. Действительно замедляет сборку/F5   -  person ASG    schedule 03.02.2014
comment
Я деактивировал jshint и jscs, чтобы иметь возможность компилировать. Инструменты -> Параметры -> Web Essentials -> Javascript. Установите для параметра «Выполнить при сборке» и «Выполнить при сохранении» значение false.   -  person gsimoes    schedule 04.02.2014


Ответы (4)


Обновление 4:

В новейшей версии Web Essentials 2013 1.9 есть «Лучше игнорировать логику для бегунов ворса», все проблемы устранены. Теперь вы можете включить «Запуск при сборке». У него есть правило игнорирования по умолчанию для общей библиотеки js и минифицированного js. Следующая конфигурация excludeFiles все еще работает, но больше не нужна.

Обновление 3:

Перекрестите мой пост с https://github.com/madskristensen/WebEssentials2013/issues/603 .

Если вам не нужны JSHint и функция JSCS, просто перейдите в «Инструменты — Параметры — Web Essentials — JavaScript», установите для «Запуск при сборке» и «Запуск при сохранении» значение False.

Если вы хотите их использовать, оставьте «Запускать при сборке» False, установите для «Запуск при сохранении» значение True. Все js будут JSHint и JSCS при предварительном просмотре, открытии и сохранении. С этим изменением вы сможете успешно строить без замедления. Список ошибок будет заполнен только открытыми в данный момент элементами js JSHint и JSCS.

По умолчанию JSHint не будет работать на всех минимизированных и некоторых распространенных библиотеках js, но JSCS будет работать всегда. В то время как JSCS, это может задержать вас примерно на несколько секунд с минимизированным js. Если вы не хотите ждать, перейдите в «Web Essentials — Изменить глобальные настройки JSCS». Изменять

"excludeFiles": ["test/data/*.js"],

в

"excludeFiles": ["**/*.min.js", "**/*.debug.js", "**/*.intellisense.js", "**/*-vsdoc.js"],

пропускать АОС только на минимизированных js. Или изменить на

"excludeFiles": ["**"],

чтобы полностью остановить АОS, оставьте только JSHint.

Конечно, вы можете написать свое собственное правило, чтобы исключить те, которые вам не нужны. Просто поставьте двойные звездочки в начале, используйте «/» вместо «\», в другой части просто используйте одинарную звездочку для подстановочного знака. Как "**/Scripts/*.js".

С правилом исключения он по-прежнему будет генерировать информационный элемент xml для каждого js, который будет исправлен позже (надеюсь), но, наконец, вы можете начать кодирование.

Наконец, вы можете обновиться до 1.8.5, но это только остановит запуск «Запуск при сборке». "Запуск при сохранении" еще нужны эти настройки. Так что это не меняет того, что я говорю здесь.

Надеюсь, что эта информация верна и полезна для текущей версии 1.8 и 1.8.5.


Обновление 1:

Установите новую версию 1.8.5. Это остановит функцию «Запуск при сборке». Это означает, что даже если вы включите его, он не будет работать на сборке. Но «Запустить при сохранении True» по-прежнему будет работать при предварительном просмотре, открытии и сохранении. Правильный относительный шаблон для excludeFiles — **/Script/**.

Таким образом, рекомендуемое правило исключения для минимизированных js будет:

    "excludeFiles": ["**/Scripts/**.min.js", "**/Scripts/**.debug.js", "**/Scripts/**.intellisense.js", "**/Scripts/**-vsdoc.js"],

Или просто используйте **/Script/**, чтобы исключить их все.

Проблема <?xml будет исправлена ​​в следующей версии в соответствии с Ошибки JSHint/JSCS в файлах .min и других? . Таким образом, этот шаблон должен быть последним правильным, с одной проблемой, которая должна и будет исправлена ​​в следующей версии Web Essentials. Или, может быть, следующий WE предоставит хорошее правило excludeFiles по умолчанию.


Обновление 2:

Лучше:

"excludeFiles": ["**/*.min.js", "**/*.debug.js", "**/*.intellisense.js", "**/*-vsdoc.js"],

чтобы исключить все минифицированные js, где бы они ни находились.


Я нашел простой способ: перейдите в «Инструменты — Параметры — Веб-основы — JavaScript», установите для параметра «Выполнить при сборке/сохранении» значение False.

Другой способ — перейти к «Web Essentials — Изменить глобальные параметры JSCS», чтобы установить excludeFiles.

Но несколько excludeFiles - это неправильный синтаксис. Следует использовать синтаксис [ "a", "b"].

И следует использовать абсолютный путь (при установке в глобальном масштабе?) с разделителем пути '/', '\' не допускается.

Подкаталог бесполезен, вы должны указать каждый путь.

Итак, допустимая настройка, подобная этой:

"excludeFiles": ["C:/Solution/Project/Scripts/*", "C:/Solution/Project/Scripts/kendo/*"]

Но этот способ вызовет еще одну ошибку сборки для каждого js-файла:

JSCS parse error: <?xml version="1.0" encoding="utf-8"?>
<checkstyle version="4.3">
</checkstyle>

И информационный элемент для файла js:

<?xml version="1.0" encoding="utf-8"?>
<checkstyle version="4.3">
</checkstyle>

Я не знаю, как этого избежать. Так что, возможно, лучший способ — это просто первый простой способ.

person ChrisTorng    schedule 06.02.2014
comment
Я сообщил об этом в JSCS github.com/mdevils/node-jscs/issues/232 и Web Essentials github.com/madskristensen/WebEssentials2013/issues/603, Парень из АОС говорит, что это должен быть относительный путь... У меня есть тест, чтобы поместить .jscs.json в корневую папку проекта, но все еще безуспешно. - person ChrisTorng; 07.02.2014
comment
vswebessentials.com/changelog имеет новую версию 1.8.5 — 6 февраля 2014 г.: * Исправления производительности * Отключено анализирование JS при сборке * Заставлял node.exe запускаться. Но проблема все еще остается. - person ChrisTorng; 07.02.2014
comment
...лучший способ - это только первый простой способ, Крис Торнг - person mjb; 20.11.2014
comment
Я просто не думаю, что это ответ. Я пользуюсь последней версией Web Essentials; Я работаю над веб-сайтами с большим количеством папок, к некоторым из которых я никогда не прикасаюсь (например, Umbraco, Drupal, WordPress). Я не возился с какой-либо конфигурацией Web Essentials, и из того, что я могу сказать, либо Web Essentials просто медленный, либо конфигурация по умолчанию недостаточно хороша и нуждается в настройке. - person Biagio Arobba; 03.06.2015

У меня была такая же проблема после установки KendoUI. Запустить проект было в принципе невозможно. Я решил это, перейдя в Web Essentials -> Изменить глобальные настройки JSCS и добавив:

"excludeFiles": ["Scripts/kendo/*"]

под записью "excludeFiles": ["test/data/*.js"].

Теперь файл .jscs.json выглядит так:

{
"requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"],
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
"disallowLeftStickedOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"disallowRightStickedOperators": ["?", "+", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"requireRightStickedOperators": ["!"],
"requireLeftStickedOperators": [","],
"disallowImplicitTypeConversion": ["string"],
"disallowKeywords": ["with"],
"disallowMultipleLineBreaks": true,
"disallowKeywordsOnNewLine": ["else"],
"excludeFiles": ["test/data/*.js"],
"excludeFiles": ["Scripts/kendo/*"]
"validateJSDoc": {
    "checkParamNames": true,
    "requireParamTypes": true
    }
}

Просто замените ["Scripts/kendo/*"] тем, что вы хотите исключить. Работал как шарм для меня.

person Nikolai Manek    schedule 05.02.2014
comment
Спасибо, Николай. Вам пришлось перезапустить VS? Я сделал то же самое изменение, но это не произошло сразу. Я загрузил решение позже в новом сеансе VS, и, похоже, оно сработало. - person Jim Lamb; 05.02.2014
comment
Я перезапустил VS по привычке :) Не уверен, что это было нужно. Если это сработало для вас, не могли бы вы проголосовать за мой ответ?;) - person Nikolai Manek; 05.02.2014

Параметр excludeFiles в файле .jscsrc — правильный путь, но вам нужно указать его как полный путь к файловой системе, а не относительный путь для вашего проекта, чтобы получить его. работать. Обратите внимание на косую черту в начале /, а не только на **. Вы также можете настроить таргетинг на более конкретные папки, но, похоже, вам нужно включить /, чтобы заставить его работать. Я подозреваю, что вы могли бы изучить документацию по подстановке файлов узла, чтобы действительно понять параметры.

На моем компьютере с Web Essentials 2013 для обновления 2 следующие шаги отключили AOS для всех файлов:

  • Выберите меню Web Essentials Menu->Edit Global JSCS settings (.jscsrc)...
  • Добавьте "excludeFiles": ["/**"], и сохраните файл настроек
  • Запустите JSCS вручную для проблемного JS-файла или повторно сохраните его (зависит от параметра Инструменты->Параметры->Web Essentials->JavaScript->Линтер->Запускать при сохранении).

Нет необходимости перезапускать Visual Studio.

person Martin Hollingsworth    schedule 23.06.2014

В Web Essentials 2013 версии 2.3 добавлен новый способ решения этой проблемы: .weignore. См. http://vswebessentials.com/features/general#weignore или https://github.com/madskristensen/WebEssentials2013/pull/1250. Новый способ лучше старого, потому что это централизованное и согласованное место для управления всеми компиляторами и линтерами. И это быстрее, потому что по-старому все равно нужно будет запускать каждый целевой файл компиляторами и линтерами, а затем игнорировать их. Новый способ будет просто игнорировать сам Web Essentials, уменьшит время/процессор/диск, который сталкивается с компиляторами и линтерами. И нет необходимости разбираться в конкретном формате конфигурации каждого компилятора и линтера, чтобы делать то же самое.

person ChrisTorng    schedule 01.09.2014