Azure Core Process client library for JavaScript - versión 1.0.0

@azure/core-process proporciona Node.js primitivas que lanzan procesos y que evitan el análisis ambiental de shell. Está destinado a paquetes y herramientas de SDK de Azure que necesitan invocar ejecutables externos en Windows, macOS o Linux.

Cómo empezar

Instalar el paquete

npm install @azure/core-process

Prerequisites

Conceptos clave

Los comandos y argumentos siempre se proporcionan por separado. El paquete no proporciona una API de cadena de comandos y no permite a los llamantes habilitar un shell.

import { execFile } from "@azure/core-process";

const { stdout } = await execFile("git", ["rev-parse", "--show-toplevel"]);
console.log(stdout);

En Windows, se prefieren nativos .exe y .com archivos. Los archivos por lotes están deshabilitados por defecto porque argumentos arbitrarios no pueden transportarse de forma segura a través de todos .cmd los envoltorios de OR .bat . Un llamante que espere una cuña por lotes puede optar por la ruta restringida por lotes:

import { execFile } from "@azure/core-process";

const { stdout } = await execFile("npm", ["--version"], {
  allowWindowsBatchFiles: true,
});
console.log(stdout);

La ruta restringida por lotes rechaza operadores de comando, expansión de variables, nuevas líneas y otros valores que no pueden demostrarse como seguros antes cmd.exe de iniciar. Si una aplicación necesita pasar esos valores, debe invocar directamente un ejecutable nativo o un punto de entrada de intérprete.

Límite de seguridad

Este paquete impide que los datos de línea de comandos sean interpretados por un shell ambiental del sistema operativo. No establece que un ejecutable encontrado en PATH sea fiable, ni limpia el código que se pasa intencionadamente a un intérprete, ni impide la inyección de opciones específicas de un comando.

No pongas secretos en los argumentos de la línea de comandos. Los argumentos de proceso pueden ser visibles para otros procesos locales y diagnósticos del sistema operativo.

Troubleshooting

Un argumento inseguro de Windows por lotes falla con un ProcessError antes de que se cree el proceso hijo. Prefiero un ejecutable nativo cuando el argumento no puede cambiarse.

Contributing

Consulta la guía de contribuciones.