Fallas eslint en Travis CI, pero no localmente

Tengo un proyecto de GitHub que ha superado a Travis CI. Al crear una request de extracción para una nueva function, Travis CI falla tanto en pr como en push debido a dos errores eslint:

/home/travis/build/enove/Thriver/packages/thriver-accounts/lib/accounts.js 121:5 error Strings must use singlequote quotes 122:5 error Strings must use singlequote quotes 

Las líneas 119 a 122 de accounts.js son las siguientes:

 119: return `Hello ${user.profile.firstname}!\n\n` + 120: `To verify your account email, simply click the link below.\n\n${url}\n\n` + 121: `If you weren't expecting this email, simply delete it.\n\n` + 122: `Thanks!\n\nAll of us at WCASA`; 

El compromiso ni siquiera cambió accounts.js , y un eslint local pasa sin error. Verifiqué y verifiqué que las versiones de nodo, npm y meteor son las mismas localmente que en Travis CI.

La configuration de Travis CI es la siguiente:

 { "sudo": "requinetworking", "language": "node_js", "node_js": "4.1.1", "before_install": [ "curl -L https://git.io/ejPSng | /bin/sh" ], "env": "CXX=g++-4.8", "addons": { "apt": { "sources": [ "ubuntu-toolchain-r-test" ], "packages": [ "g++-4.8" ] } }, "services": "mongodb", "script": [ "meteor npm run lint" ], "group": "stable", "dist": "precise", "os": "linux" } 

El .eslintrc es el siguiente:

 { "parser": "babel-eslint", "parserOptions": { "ecmaVersion": 6, "ecmaFeatures": { "impliedStrict": true } }, "env": { "browser": true, "node": true, "mongo": true, "meteor": true }, "extends": [ "airbnb" //"plugin:meteor/recommended" ], "globals": { "Thriver": true, "SimpleSchema": true, "Marked": true, "SHA256": true, "google": true, "geoXML3": true, "AutoForm": true, "details_shim": true }, "rules": { "no-underscore-dangle": 0, "new-cap": 0 } } 

Esto ha sucedido antes en un file diferente y "resolví" el problema haciendo que eslint ignore la línea. Pero no puedo hacer eso por cada tema misterioso. ¿Algún consejo?

http://eslint.org/docs/rules/quotes

Esta es probablemente la solución a su problema.

JavaScript le permite definir cadenas en una de tres forms: comillas dobles, comillas simples y marcadores (a partir de ECMAScript 6). Por ejemplo:

 /*eslint-env es6*/ var double = "double"; var single = 'single'; var backtick = `backtick`; // ES6 only 

La elección de cómo definir cadenas en una base de código es estilística fuera de los literales de plantilla (que permiten interpretar las expresiones integradas). Muchas bases de código requieren que las cadenas se definan de manera consistente.

Intentaría establecer una de estas reglas y volver a ejecutar las testings.

¡Avíseme si esto no soluciona su problema!

Aún no tengo idea de cómo pasó el eslint localmente. Quizás estaba atrasado en la versión de eslint o Airbnb. Sin embargo, me di count de que las líneas realmente necesitaban ser corregidas. Las dos líneas inferiores de código no deberían usar marcas de retroceso porque no hay variables en esas cadenas.

 119: return `Hello ${user.profile.firstname}!\n\n` + 120: `To verify your account email, simply click the link below.\n\n${url}\n\n` + 121: 'If you weren\'t expecting this email, simply delete it.\n\n' + 122: 'Thanks!\n\nAll of us at WCASA'; 

Eslint es mucho más feliz con una cadena concatenada de diferentes styles que uno consistente donde no todos los segmentos contienen una variable.