importa onde o sinalizador aparece em um comando?

importa onde o sinalizador aparece em um comando?

Tenho usado o seguinte comando para instalar o pacote Expo CLI:

sudo npm install expo-cli --global

O comando acima funciona com sucesso para instalar esse pacote. No entanto, estou me perguntando se mover --globalantes do nome do pacote funcionaria igualmente ao comando acima. Então, fazendo isso:

sudo npm install --global expo-cli

Ambiente: Ubuntu 18.04.

Procurei uma referência on-line, mas não encontrei nenhuma (embora deva haver uma em algum lugar).

Responder1

Opágina de manual paranpm(1)mostra:

 Synopsis
      npm <command> [args]

Não diz muito mais, então tudo o que podemos deduzir é que installé o <command>e deve vir antes do [args]. Os [args]são expo-clie --global.

Vamos inspecionar o installcomando para ver se conseguimos mais detalhes. npm-install(1)diz:

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]

Não diz nada sobre ordem. Isso começa a nos fazer pensar que a ordem não importa. Se rolarmos para baixo, veremos coisas 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... então a ordem nunca é mencionada na página de manual, mas vemos que isso --tagse aplica a todos os alvos. Eles acharam que era importante mencionar na página de manual porque se alguém tentar instalar vários pacotes e especificar uma tag, eles podem assumir que o --tagsinalizador se aplica apenas ao pacote antes ou depois. Não é esse o caso, as opções se aplicam a tudo. Se as opções se aplicam a tudo, entãoa ordem provavelmente não é importante.

Observe que todos os exemplos dados na página de manual colocam o pacote antes do sinalizador.

Você poderia experimentar:

npm install sax --global expo-cli

Verifique se ambos estão instalados globalmente (aposto que estão).

Se você deseja instalar vários pacotes, alguns locais, alguns globais, sugiro adotar uma abordagem segura e usar dois comandos separados porque não está definido na documentação e, portanto, o comportamento pode mudar.

informação relacionada