Hoje em dia, a maioria dos projetos de front-end envolve algum tipo de pacote NPM. Ocasionalmente, ao navegar pela documentação desses pacotes, vejo uma recomendação para instalar um pacote como este.
yarn global add <package>
Ou como este.
npm install --global <package>
Em ambos os exemplos, o pacote é instalado globalmente. Isso significa que o senhor pode executar o <package>
de qualquer diretório em seu sistema.
Isso funciona, mas instalar pacotes globalmente tem algumas desvantagens.
- Se estiver trabalhando com uma equipe de desenvolvedores, é difícil garantir que todos estejam executando o mesmo pacote.
- O senhor só pode ter uma versão instalada globalmente. Isso causa problemas se o senhor tiver projetos diferentes que dependem de versões diferentes de um pacote.
Neste artigo, mostrarei três abordagens diferentes que o senhor pode usar para executar pacotes sem precisar instalá-los globalmente.
Configuração rápida
Para este artigo, vamos instalar uma pequena ferramenta CLI chamada Figlet, que imprime texto artístico ASCII. Crie um diretório vazio e navegue até ele. Em seguida, adicione um arquivo package.json
com o seguinte:
{ "name": "example", "license": "UNLICENSED", "dependencies": { "figlet-cli": "^0.1.0" } }
Executar yarn install
ou npm install
(dependendo de sua preferência) para instalar o pacote.
Observação: O yarn
e npm
são idênticos daqui em diante, portanto, vou listar apenas os comandos yarn
versões.
Editando seu $PATH
A primeira maneira de executar pacotes instalados localmente como se estivessem instalados globalmente é editando seu $PATH
variável de ambiente. A variável de ambiente $PATH
informa ao seu sistema em quais diretórios procurar executáveis.
Um dos recursos úteis do Yarn e do NPM é que ambos incluem uma variável .bin
dentro do diretório node_modules
que contém links simbólicos para todos os executáveis instalados. O senhor pode adicionar facilmente essa pasta ao seu caminho. O truque aqui é modificar sua pasta $PATH
para incluir um local node_modules/.bin
local. Isso permitirá que o senhor execute qualquer ferramenta local da CLI do NPM como se ela estivesse instalada globalmente.
Primeiro, é preciso determinar qual shell o senhor está executando. Para fazer isso, o senhor pode digitar o seguinte na CLI.
echo $SHELL
Se o senhor não tiver configurado um shell personalizado, provavelmente será zsh
ou bash
. Se for bash
, abra o ~/.bash_profile
. Se for zsh
, abra ~/.zshenv
. Se o arquivo de que o senhor precisa não existir, crie-o.
Em seguida, adicione o seguinte à parte inferior. Observe que ./node_modules/.bin
é um relativo path. Isso significa que ele é anexado ao diretório em que o senhor se encontra no momento.
export PATH="./node_modules/.bin:$PATH"
É isso aí! Reinicie o shell, navegue até o diretório que o senhor criou e tente executar figlet
.
figlet Aww yeah
O senhor verá algo parecido com isto. Muito legal, não é?
_ __ __ _ / \__ ____ __ \ \ / /__ __ _| |__ / _ \ \ /\ / /\ \ /\ / / \ V / _ \/ _` | '_ \ / ___ \ V V / \ V V / | | __/ (_| | | | | /_/ \_\_/\_/ \_/\_/ |_|\___|\__,_|_| |_|
O próximo passo é definir comandos em seu package.json
. Para adicionar um comando, tudo o que o senhor precisa fazer é adicionar um scripts
com o nome do comando e o que o senhor deseja executar. Neste exemplo, adicionei uma seção aww-yeah
comando.
{ "name": "example", "license": "UNLICENSED", "dependencies": { "figlet-cli": "^0.1.0" }, "scripts": { "aww-yeah": "figlet Aww Yeah" } }
O senhor pode executar seu comando personalizado com yarn run <command>
. A maioria dos comandos também pode ser abreviada para yarn <command>
. Experimente com yarn aww-yeah
!
O senhor pode até mesmo passar argumentos para seus comandos personalizados. Tente adicionar o comando ascii
listado abaixo ao seu scripts
e executando yarn ascii Aww Yeah
.
"scripts": { "aww-yeah": "figlet Aww Yeah", "ascii": "figlet" }
Aqui está um exemplo do mundo real. Sou um grande fã dos dois ESLint e Jest. Quase todos os meus projetos têm esses comandos definidos.
"scripts": { "lint": "eslint --max-warnings=0 .", "test": "jest" }
Isso é ótimo porque minha equipe e eu podemos compartilhar esses comandos. Eles também são autodocumentados, portanto, se alguém for novo em um pacote, poderá dar uma olhada na seção package.json
para ver quais comandos estão disponíveis.
NPX
Por fim, temos NPX, um executor de pacotes criado pelo pessoal do NPM. Essa ferramenta útil permite que o senhor execute comandos CLI sem instalar um pacote localmente. Isso é ótimo para ferramentas que o senhor só precisa executar uma vez, como geradores.
O NPX provavelmente já está instalado em seu computador se o senhor tiver instalado o Node.js. Caso contrário, o senhor pode instalar este globalmente com yarn global add npx
.
Vamos tentar com o figlet
.
npx figlet Aww Yeah
Não foi fácil?
Ocasionalmente, o senhor encontrará um comando que o NPX não sabe como encontrar. Um exemplo é o meu Geradores Yeoman . Nesses casos, o senhor precisará informar ao NPX qual pacote deve ser executado explicitamente com um -p
.
npx -p yo -p @landonschropp/generator-eslint yo @landonschropp/eslint
Tudo pronto!
E aí está. Agora, o senhor pode instalar qualquer módulo NPM localmente e executar o comando como se fosse global. Pessoalmente, uso todos esses três métodos regularmente. Espero que os senhores os considerem tão úteis quanto eu!

Sobre Landon Schropp
Landon é um desenvolvedor, designer e empreendedor que mora em Kansas City. Ele é o autor do livro Desvendando o Flexbox. Ele é apaixonado por criar aplicativos simples que as pessoas adoram usar.