Cómo pasar parámetros de nodo como '--trace-deprecation' en scripts npm

Cómo pasar parámetros de nodo como '--trace-deprecation' en scripts npm

Me da un poco de vergüenza no poder encontrar una buena solución para esto por mí mismo, pero ¡ay!

Al usar npm, generalmente tenemos un package.jsonarchivo con un scriptssegmento para almacenar las tareas que queremos que nuestra cadena de herramientas ejecute de forma rutinaria, por ejemplo:

"scripts": {
    "build": "webpack --env production",
    "start": "webpack-dev-server"
}

Ahora es posible que hayamos actualizado partes de nuestra cadena de herramientas (en este paquete web de ejemplo) y de repente recibimos un mensaje como este:

(node:10868) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET] DeprecationWarning: Compilation.modules was changed from Array to Set (using Array method 'reduce' is deprecated)
(Use `node --trace-deprecation ...` to show where the warning was created)

Tal como está, es completamente inútil para diagnosticar y resolver el problema. Algo en algún lugar de algún script de compilación está mal. ... ¡Hurra!

Al menos en el caso de webpack y sus complementos, podemos obtener resultados de seguimiento bastante útiles invocando en la CLI:

node --trace-deprecation node_modules/webpack/bin/webpack.js --env production

Una línea bastante engorrosa, ¿no? Hay una gran cantidad de razones por las que realmente queremos evitar esto. Sin ningún orden en particular:

  • Las desaprobaciones en particular son una sola línea sin color en un mar de mensajes codificados por colores, que fácilmente se pasan por alto.
  • tenemos que construir el proyectode nuevodespués de notar la desaprobación
  • en el script simplemente usamos el nombre de nuestra herramienta de compilación deseada, aquí tenemos que proporcionar la ruta relativa completa
  • tenemos que copiar los parámetros deseados desde nuestro package.jsona la CLI (si, por ejemplo, diferentes entornos activan diferentes complementos, no es un caso de uso general y, por lo tanto, se pasa por alto fácilmente incluso cuando un programador ya tuvo la idea de manejar las depreciaciones)
    • Debido a lo agregado, .jstampoco podemos simplemente copiar todo el cuerpo del script.
  • pereza pura y pura

Entonces...

  • ¿Hay alguna manera de activarlo --trace-deprecationen la scriptsporción de package.json?
  • Si no es así, ¿hay alguna forma de utilizar fuentes de script de compilación alternativas, por ejemplo, a través denps?

... Supongo que siempre podría poner la invocación del nodo en un archivo por lotes separado, pero prefiero usar un solo lugar para administrar todos los scripts de compilación.

Caso de uso previsto:

Me gustaría que esta opción esté siempre activa cuando construya localmente y probablemente en ramas de CI seleccionadas, para poder generar el seguimiento completo directamente en el registro y marcar el paso como inestable. Tener un script npm dedicado "build:trace" o similar parece ser la solución sencilla:sise puede hacer.

Respuesta1

Sí, de hecho: puede pasar muchos indicadores CLI de nodos como variables de entorno, que pueden incluirse en un scriptscomando. Por ejemplo:

"build": "NODE_OPTIONS='--trace-deprecation' webpack",

Para ver los documentos sobre qué banderas se admiten, consulte:https://nodejs.org/api/cli.html#node_optionsoptions

Además, simplemente anteponer la variable de entorno de esa manera no funcionará en Windows. Si desea variables de entorno multiplataforma en sus scriptscampos, la mejor solución que conozco esambiente cruzado.

información relacionada