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.

Emiliano Zilocchi
fuente
¿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 }
}
Epeli
fuente
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 */
zevero
fuente
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/

Talemyn
fuente
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