¿Importa dónde aparece la bandera en un comando?

¿Importa dónde aparece la bandera en un comando?

He estado usando el siguiente comando para instalar el paquete Expo CLI:

sudo npm install expo-cli --global

El comando anterior funciona correctamente para instalar ese paquete. Sin embargo, me pregunto si mover el --globalantes del nombre del paquete funcionaría de la misma manera que el comando anterior. Entonces, haciendo esto en su lugar:

sudo npm install --global expo-cli

Entorno: Ubuntu 18.04.

Busqué una referencia en línea pero no encontré ninguna (aunque debe haber una en alguna parte).

Respuesta1

Elpágina de manual paranpm(1)muestra:

 Synopsis
      npm <command> [args]

No dice mucho más, por lo que todo lo que podemos deducir es que installes el <command>y debe ir antes del [args]. Los [args]son expo-cliy --global.

Inspeccionemos el installcomando para ver si podemos obtener más detalles. npm-install(1)dice:

Synopsis
    ...
    npm install [<@scope>/]<name>
    ...

    aliases: npm i, npm add
    common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact]
                    [-B|--save-bundle] [--no-save] [--dry-run]

No dice nada sobre el orden. Esto empieza a hacernos pensar que el orden no importa. Si nos desplazamos hacia abajo vemos cosas como:

The  --tag  argument will apply to all of the specified install targets. 
The -g or --global argument will cause npm to install the package globally 
rather than locally.  See npm help folders.

Ok... entonces el orden nunca se menciona en la página de manual, pero vemos que --tagse aplica a todos los objetivos. Sintieron que era importante mencionarlo en la página de manual porque si alguien intenta instalar varios paquetes y especificar una etiqueta, podría asumir que la --tagbandera se aplica solo al paquete anterior o posterior. Ese no es el caso, las opciones se aplican a todo. Si las opciones se aplican a todo, entoncesEl orden probablemente no sea importante..

Tenga en cuenta que todos los ejemplos que dan en la página de manual colocan el paquete antes de la bandera.

Podrías probarlo:

npm install sax --global expo-cli

Compruebe si ambos están instalados globalmente (apuesto a que sí).

Si desea instalar varios paquetes, algunos locales y otros globales, le sugiero que adopte un enfoque seguro y utilice dos comandos separados porque no está definido en la documentación y, por lo tanto, el comportamiento podría cambiar.

información relacionada