Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Historicamente, o comando npx permitia executar pacotes npm sem a necessidade de instalação prévia, facilitando testes rápidos e workflows mais ágeis. No entanto, usuários têm notado que, a partir de versões mais recentes do npm (a partir do npm 7), o comportamento padrão do npx mudou. Agora ele tende a instalar automaticamente os pacotes na primeira execução, mesmo que a intenção inicial fosse apenas executar sem instalação, como era esperado.
Esse comportamento causa frustração, especialmente em ambientes onde o controle de instalações é crítico, como ambientes de CI/CD ou quando se deseja manter o cache limpo, evitando instalações não planejadas.
Ao rodar comandos do tipo npx cowsay "Hello" em versões recentes do npm, aparece uma mensagem de confirmação de instalação, como:
"Need to install the following packages: cowsay. Ok to proceed? (y)"
Se o usuário não confirmar, o comando não executa, ou então, o pacote é instalado automaticamente na primeira execução, mesmo sem intenção. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Esse comportamento difere das versões anteriores, onde o npx tentava apenas buscar na cache local ou global antes de tentar uma instalação, sem requerer confirmação. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Para evitar instalações automáticas ao usar npx, é possível adotar duas abordagens: A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
1. Utilizar o flag --no-install: A partir do npm 7, esse flag foi introduzido para forçar o npx a não fazer instalação, apenas a procurar na cache. Assim, o comando fica:
npx --no-install cowsay "Hello"
Se o pacote não estiver na cache, o comando falhará, permitindo um controle maior. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
2. Gerenciar a instalação de forma explícita: Antes de usar o pacote com npx, verificar se ele está instalado globalmente ou na cache, e instalar manualmente apenas quando necessário. Dessa forma, evita-se surpresas.
npm list -g cowsay || npm install -g cowsay
npx cowsay "Hello"
Se o objetivo é rodar uma versão específica de npx que ainda mantenha o comportamento antigo, pode ser necessário fazer downgrade do npm ou usar ferramentas como o npx de versões anteriores ou scripts customizados. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
O uso do --no-install resolve o problema para quem quer evitar instalações automáticas, mas também limita a flexibilidade do comando, pois, se o pacote não estiver na cache, o comando não funcionará. Além disso, em ambientes onde a instalação é permitida, essa abordagem exige uma gestão cuidadosa das versões dos pacotes. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Outro ponto importante é que, ao fazer downgrade do npm apenas para manter o comportamento antigo, perde-se melhorias e correções de bugs presentes nas versões mais novas. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
--no-install para comandos pontuais em scripts ou tarefas automatizadas.npx.nvm) para facilitar testes em diferentes versões e comportamentos.A mudança no comportamento do npx a partir do npm 7 impacta fluxos de trabalho que dependem da execução rápida de pacotes sem instalação. A melhor estratégia é adaptar a equipe ao uso do flag --no-install ou gerenciar explicitamente as instalações, permitindo maior controle e previsibilidade nas operações. Assim, é possível manter a agilidade sem abrir mão do controle sobre o ambiente de execução. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Carregando comentários...