¿Cómo puedo configurar Web Essentials 2013 para ignorar archivos?


Tengo un nuevo proyecto de aplicación web MVC 5.1 en VS 2013 (Actualización 1) w/ Web Essential 2013 (último a partir de hoy) instalado. Después de crear el proyecto, Web Essentials busca archivos javascript y publica mensajes en la ventana de salida para detectar cualquier problema que encuentre. Para un nuevo proyecto MVC 5.1, genera más de 11,000 mensajes - no es realmente útil.

He intentado dos métodos para que ignore los archivos javascript ofensivos que se incluyen con los nuevos proyectos MVC 5 por por defecto:

  1. Se utilizó el comando Web Essentials > Editar Configuración global de JSCS para abrir el .jscs.archivo json en el directorio de mi perfil de usuario. Luego se modificó la propiedad" excludeFiles"a ["test/data/.js", " Scripts / jquery .js"].

  2. Creado un.archivo jshintignore en mi carpeta Scripts con " jquery*.js".

Ninguno de estos métodos ha tenido ningún impacto en los mensajes JSCS generados. ¿Estoy haciendo algo mal, o es esto un problema con Web Essentials?

Author: Jim Lamb, 2014-02-01

4 answers

Actualizar 4:

El nuevo Web Essentials 2013 1.9 tiene "Mejor ignorar la lógica para los corredores de pelusa", todos los problemas se eliminan. Ahora puedes activar "Ejecutar en compilación". Tiene la regla de omisión predeterminada para la biblioteca js común y js minificado. La siguiente configuración excludeFiles todavía funciona, pero ya no es necesaria.

Actualizar 3:

Cruza mi mensaje desde https://github.com/madskristensen/WebEssentials2013/issues/603 .

Si no necesitas La función de JSHint y JSCS, simplemente vaya a "Herramientas-Opciones - Web Essentials-JavaScript", establezca" Ejecutar en compilación "y" Ejecutar en guardar " en False.

Si desea usarlos, mantenga "Run on build" False, establezca "Run on save" en True. Todos los js serán JSHint y JSCS mientras previsualizan, abren y guardan. Con este cambio, puede construir con éxito sin ralentizar. La lista de errores solo se llenará con los elementos JSHint y JSCS de JS actualmente abiertos.

Por defecto, JSHint no se ejecutará en todos los minificados y alguna biblioteca js común, pero JSCS se ejecutará siempre. Mientras que JSCS, puede retrasar sobre segundos serval con js minificado. Si no quieres esperar, ve a "Web Essentials-Edit global JSCS settings". Cambio

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

Hacia

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

Omitir JSCS solo en js minificadas. O cambiar a

"excludeFiles": ["**"],

Para detener JSCS totalmente, solo mantenga JSHint funcionando.

De causa puede escribir su propia regla para excluir a aquellos que no necesita. Simplemente ponga estrellas dobles al principio, use '/'en lugar de'\', otra parte solo usa una sola estrella para comodín. Como "**/Scripts/*.js".

Con la regla de exclusión, todavía generará un elemento de información xml para cada js, que se corregirá más tarde (con suerte), pero por fin puede comenzar a codificar.

Por fin, puede actualizar a la versión 1.8.5, pero solo detiene la ejecución de "Run on build". "Ejecutar en guardar" todavía necesita estos ajustes. Así que no cambia lo que digo aquí.

Espero que estas informaciones sean correctas y útiles, con la versión actual de 1.8 y 1.8.5.


Actualizar 1:

Instale la nueva versión 1.8.5. Se detendrá la función "Run on build". Eso significa que incluso si lo enciendes, no se ejecutará en build. Pero "Ejecutar en guardar verdadero" todavía y realmente ejecutar en vista previa, abrir y guardar. El patrón relativo correcto de excludeFiles es **/Script/**.

Así que la regla de exclusión de recommand para js minificada será:

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

O simplemente use **/Script/** para excluirlos a todos.

El problema <?xml se solucionará por la siguiente versión, de acuerdo con JSHint / JSCS Errores en .min files y otros?. Así que este patrón debe ser el correcto final, con un problema que debe y será solucionado por la próxima versión de Web Essentials. O tal vez a continuación vamos a proporcionar una buena regla por defecto excludeFiles.


Actualizar 2:

Una mejor:

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

Para excluir toda js minificada sin importar dónde esté.


La manera fácil que encontré es ir a " Herramientas-Opciones-Web Essentials-JavaScript", establece Run on Build / Save en False.

Otro método es ir a "Web Essentials - Edit global JSCS settings", para establecer excludeFiles.

Pero múltiples excludeFiles es una sintaxis incorrecta. Debería usar la sintaxis [ "a", "b"].

Y debe usar ruta absoluta, (mientras se establece en global?) con el divisor de ruta'/', ' \ ' no está permitido.

El subdirectorio no sirve de nada, debe especificar cada ruta.

Así que una configuración válida como esto:

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

Pero de esta manera generará otro error de compilación por archivo js:

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

Y elemento de información por archivo js:

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

No se como evitarlo. Así que tal vez la mejor manera es sólo la primera manera fácil.

 18
Author: ChrisTorng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-26 04:21:00

Tuve el mismo problema después de instalar KendoUI. Era básicamente imposible ejecutar el proyecto. Lo resolví yendo a Web Essentials - > Editar configuración global de JSCS y agregando:

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

Debajo de la entrada "excludeFiles": ["test/data/*.js"].

Ahora el.jscs.el archivo json se ve así:

{
"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
    }
}

Simplemente reemplaza el ["Scripts/kendo/*"] con lo que quieras excluir. Funcionó como un encanto para mí.  

 7
Author: Nikolai Manek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-04 11:16:55

La opción excludeFiles en .jscsrc es el camino correcto, pero debe especificarlo como una ruta completa del sistema de archivos y no como una ruta relativa para su proyecto para que funcione. Tenga en cuenta la barra inclinada hacia adelante / en lugar de solo la **. También puede apuntar a carpetas más específicas, pero parece que necesita incluir el / para que funcione. Sospecho que podría investigar la documentación de globbing de archivos de nodo para entender realmente la opcion.

En mi equipo, con Web Essentials 2013 para la actualización 2, los siguientes pasos deshabilitaron JSC para todos los archivos:

  • Seleccione el menú Web Essentials- > Editar configuración global de JSCS (.jscsrc)...
  • Agregue "excludeFiles": ["/**"], y guarde el archivo de configuración
  • Ejecute JSCS manualmente en el archivo JS problemático o guardándolo nuevamente (Dependiendo de Herramientas->Opciones - > Web Essentials- > JavaScript - >Linter - >Ejecutar en la opción guardar

No es necesario reiniciar Visual Estudio.

 2
Author: Martin Hollingsworth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-23 02:24:13

Web Essentials 2013 Versión 2.3 añadir una nueva forma de hacer frente a este problema: .weignore. Véase http://vswebessentials.com/features/general#weignore o https://github.com/madskristensen/WebEssentials2013/pull/1250. La nueva forma es mejor que la antigua, porque este es el lugar centralizado y consistente para administrar todos los compiladores y linters. Y es más rápido porque la forma antigua todavía tendrá que ejecutar cada archivo de destino por compiladores y linters, y luego ignorados por ellos. New way simplemente ignore de Web Essentials en sí, reduzca el tiempo / CPU / disco que se ejecuta en compiladores y linters. Y no hay necesidad de entender cada compilador y linters formato de configuración específica para hacer lo mismo.

 2
Author: ChrisTorng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-01 04:51:57