Cómo decirle a JSLint / JSHint qué variables globales ya están definidas


79

En mi proyecto tenemos algunas variables globales que funcionan como contenedores:

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

Entonces uso ese script en todo el sitio y JSLint / JSHint se queja de eso:

'MyProject' no está definido

Sé que puedo ir a todos los archivos JavaScript y agregar el comentario /*global MyProject*/ encima. Pero estoy buscando una manera de definir ese comentario en algún tipo de archivo de configuración para no tener que ir archivo por archivo agregando este comentario.

Algún tipo de opción en el config/jshint.ymlsería bueno.


¿Está utilizando las aplicaciones web (por ejemplo, jshint.com ) o las está ejecutando con node?
RobH

Estoy usando para ejecutar como tarea con rake. En realidad estoy usando jshint_on_rails
Emiliano Zilocchi

Eso explica el archivo 'config / jshint.yml' del que no había oído hablar.
RobH

Respuestas:


81

Para JSHint, puede crear .jshintrcen el directorio de su proyecto con

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

2
Gracias. Pero como estoy usando jshint_on_rails, puedo configurar esta opción: predef: 'MyProject' en config / jshint.yml
Emiliano Zilocchi

Debería haber mencionado eso en su pregunta :)
Epeli

Tienes razón, me perdí esa parte. Lo tendré en cuenta para la próxima vez. Gracias
Emiliano Zilocchi

11
Solo una pequeña nota sobre el uso de esto: poner falsepara bibliotecas como angulary $. Pero ponte esto truepara los globales que quieras redefinir, como myApp.
policlick

57

Esto es solo para globales

/* global MyProject */

En tu caso necesitas

/* exported MyProject */

1
esta es una buena respuesta si está trabajando con un archivo JavaScript, ¡gracias!

4

JSLint tiene un área de texto debajo de las opciones que dice predefine global variables here . Simplemente agregue los nombres de las variables allí antes de ejecutar la verificación.

JSHint no le permite agregar variables globales, pero puede desmarcar la When variable is undefinedopción para suprimir esa advertencia.

La biblioteca JSHint también tiene parámetros para globales, si la ejecuta como una biblioteca. . . detalles aquí: http://jshint.com/docs/


No parece que estén usando la interfaz web - 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.ySome kind on option in the config/jshint.yml would be nice
Ian

1
Lo acabo de encontrar, el atributo 'predef' en config / jshint.yml. es un atributo separado por comas. ¡Gracias!
Emiliano Zilocchi

1
Vale la pena mencionar que también predef existe en JSLint .
ruffin

Dado Visual Studio 2013 con Web Essentials y una jerarquía convencional de carpeta de solución y subcarpetas de proyecto, puede colocarlo en la carpeta raíz de la solución.
George

Votos en contra inmerecidos. La pregunta no dejó en claro que Rails se estaba utilizando hasta después de que se dejó esta respuesta. +1
superluminario
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.