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:
- você não precisa instalar nada
- 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.1npx 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.