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.json
archivo con un scripts
segmento 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.json
a 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,
.js
tampoco podemos simplemente copiar todo el cuerpo del script.
- Debido a lo agregado,
- pereza pura y pura
Entonces...
- ¿Hay alguna manera de activarlo
--trace-deprecation
en lascripts
porción depackage.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 scripts
comando. 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 scripts
campos, la mejor solución que conozco esambiente cruzado.