Libsass: solicitud de función: agregue una bandera para desactivar las ADVERTENCIAS DE DEPRECACIÓN

Creado en 31 ene. 2019  ·  10Comentarios  ·  Fuente: sass/libsass

Desde la versión 4.9 de node-sass, la advertencia actual se muestra en muchos proyectos. ( puede ver un problema abierto pidiendo una forma de silenciar la advertencia aquí )

DEPRECATION WARNING: Passing a string to call() is deprecated and will be illegal
in Sass 4.0. Use call(get-function("variable-exists")) instead.

La advertencia está bien y me encantaría arreglar todas mis llamadas de funciones obsoletas, pero no puedo, la razón principal es que ni siquiera sé qué biblioteca es la que tiene el problema ... (no es mi código) i entienden la necesidad de obligar a todos a actualizar sus cosas obsoletas, pero eso no es factible. Creo que cada desarrollador es responsable de su propia aplicación y correr el riesgo de quedar desactualizado es por su cuenta, acepto la responsabilidad :)

Y entonces ... esta solicitud de función es agregar en algún lugar de alguna manera una bandera que se pueda encender / apagar el DEPRECATION WARNINGS

Ya intenté por error agregar una variable de entorno en el proyecto node-sass, pero @nschonni me dijo que el PR debería hacerse aquí en libsass , sin embargo @xzyfer me dijo que la solución aceptable para silenciar la depreciación warnings es arreglar el código obsoleto, incluso si el código pertenece a otra persona, una biblioteca.

  • Puede ver el código para agregar la bandera ya está disponible en PR-2587 del proyecto node-sass , no es mucho.
  • Además, el problema abierto con respecto a este asunto es 2334 (también del proyecto node-sass).

Todos 10 comentarios

Creo que tengo una solución más estándar, ¿qué piensan todos sobre la implementación de niveles de registro? (como log4j, winston , etc.).

Por favor, dígame si está más de acuerdo con esto :) (así que modificaré este título de FR)

No agregaremos niveles de registro ni habilitaremos el silenciamiento de las advertencias de desaprobación. Estas advertencias son de vital importancia para que el código de usuario continúe funcionando.

Sin embargo, consideraríamos soluciones que faciliten la búsqueda del código utilizando un comportamiento obsoleto.

Gracias por responder a todas mis inquietudes con este @xzyfer ... por cierto, encontré la biblioteca con el problema, así que la solución está en progreso para mí: +1:

Y entonces ... supongo que todos los demás casos de uso tendrán que esperar hasta que los propietarios de la biblioteca decidan arreglar sus cosas obsoletas (...)

Recuerde que estas advertencias no son de importancia crítica para continuar con nuestro trabajo como desarrolladores ... si fueran así, se lanzaría un error en lugar de una advertencia.

Un enfoque alternativo podría ser https://github.com/sass/libsass/pull/2862 ...

Esto es realmente importante. Actualmente recibo docenas del mismo error.

DEPRECATION WARNING on line 29 of sass/elements/image.sass:
#{} interpolation near operators will be simplified in a future version of Sass.
To preserve the current behavior, use quotes:

  unquote("image_size_#{$size}")

con algo como esto

+_(image_size_#{$size})

Ni siquiera estoy seguro de a qué operador se refiere, pero preferiría cambiar a la "versión simplificada" cuando se trata de escribir esa horrible alternativa.

Estas advertencias son de vital importancia para que el código de usuario continúe funcionando.

Sí, estoy de acuerdo @xzyfer , pero ya he leído estas advertencias y quiero dejarlas a un lado por el momento y centrarme en otras cosas, pero no puedo porque estas advertencias llenan todo el terminal

No hay ninguna intención de apoyar esto en este momento. Las advertencias de obsolescencia son de vital importancia para la evolución del idioma. Silenciar la advertencia de desaprobación es solo aplazar el dolor para cuando se introduzca el cambio de ruptura que nuestro rastreador de problemas disfrutará inundado. Para eliminar la advertencia, degradar a una versión de Libsass anterior a la introducción de la advertencia.

Las advertencias solo son útiles la primera vez que las lee. Si alguien los apaga es porque ya los leyó y está cansado de ellos y por lo tanto es consciente de ellos, volver a mostrarlos no hará ninguna diferencia, y en el futuro sabrán por qué se rompió.
No permitir que la gente reprima estas advertencias no ayuda a nadie, es simplemente molesto.

También la advertencia es sobre cómo se simplificará más y la solución que da para hacerlo mucho más complicado.
Puede ver por qué alguien no querría seguir esa sugerencia, especialmente cuando la uso en todo mi proyecto.

@xzyfer tienes un buen punto en esto !! Estoy de acuerdo contigo :)

Silenciar la advertencia de desaprobación es solo aplazar el dolor para cuando se introduzca el cambio de ruptura que nuestro rastreador de problemas disfrutará inundado

¡Sin embargo, creo que todavía podemos encontrar una solución! para la mayoría de los desarrolladores que se quejan de esto. La razón principal es esta parte (como dijo @luaVolk ):

Actualmente recibo docenas del mismo error.

¿Qué opinas de reducir todas esas advertencias a una sola ? en mi caso, cuando abrí esta solicitud de función, recibía alrededor de 100k + advertencias. Creo que puede eliminar todas las "advertencias detalladas" y simplemente imprimir:

Your libsass implementation is deprecated and will be illegal in Sass 4.0, for more details try '--libsass-verbose'.

Y tal vez agregar:

The following errors were found:
> 12 errors found: #{} interpolation near operators will be simplified in a future version of Sass
> 4 errors found: Passing a string to call() is deprecated and will be illegal
in Sass 4.0. Use call(get-function("variable-exists")) instead.

O algo así ... espero que te hagas una idea, ¿qué te parece @xzyfer?

Supongo que vale la pena administrar mi último comentario como una solicitud de función diferente (?)

¿Fue útil esta página
0 / 5 - 0 calificaciones