O npx Package Runner

npx é um comando poderoso que está disponível no npm a partir da versão 5.2, lançada em Julho de 2017.

Se você não quer instalar o npm, você pode instalar o npx como um pacote standalone

O npx permite rodar seu código feito com Node.js e publicado nos registros do npm.

Rode comandos locais facilmente

Desenvolvedores Node.js costumam publicar a maioria dos comandos executáveis como pacotes globais, pois assim é garantido que eles estejam salvos no path e executados imediatamente.

Isso é bem chato poque você não pode instalar versões diferentes do mesmo comando.

Ao rodar npx nomedocomando a referência correta do comando dentro da pasta node_modules do projeto é encontrada automaticamente, e sem a necessidade de saber o caminho exato, e sem a necessidade de ter o pacote instalado globalmente e no path do usuário.

Execução de comandos sem instalação

Outro excelente recurso do npx é permitir rodar comandos sem tê-los instalados.

Isso é extremamente útil, porque:

  1. você não precisa instalar nada
  2. você pode rodar diferentes versões do mesmo comando, usando a sintaxe @version

Uma demonstração típica do uso do npx é através do comando cowsay. O cowsay vai imprimir uma vaca na tela dizendo o que você digitou no comando. Por exemplo:

cowsay "Salve pra firma" vai resultar em

_________________
< Salve pra firma >
-----------------
\ ^__^
\ (oo)\ _______
(__)\ )\/\
||----w |
|| ||

Isso só funciona se você tiver o comando cowsay previamente instalado pelo npm. Caso contrário você receberá um erro ao tentar rodar o comando.

O npx permite que você rode o comando sem tê-lo instalado localmente:

npx cowsay "Salve pra firma"

Outros cenários de exemplo:

  • rodar a CLI do vue para criar novas aplicações: npx @vue/cli create my-vue-app
  • criar uma aplicação React usando create-react-app: npx create-react-app my-react-app

Uma vez executado, o código baixado será apagado.

Rodando um código em uma versão difente do Node.js

Utilize o @ para especificar a versão, e combine-o com uma versão empacotada do node:

npx node@10 -v #v10.18.1
npx node@12 -v #v12.14.1

Isso ajuda a evitar ferramentas como o nvm ou outros gerenciadores de versão para Node.js.

Rodando códigos diretamente de uma URL

O npx não te limita aos pacotes publicados nos registros do npm.

Você pode rodar códigos de um gist no GitHub, por exemplo:

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

Mas é claro que você precisa ter cuidado ao rodar códigos que estão fora do seu controle, com grandes poderes vem grandes responsabilidades.