Motivação por trás do Node.js
No início do desenvolvimento com JavaScript, os programadores dependiam exclusivamente do ambiente do navegador para testar e executar scripts. Essa limitação motivou Ryan Dahl, em 2009, a criar o Node.js utilizando a engine V8 do Chrome. O objetivo era ampliar as possibilidades da linguagem além do frontend, permitindo sua utilização em servidores, automações, aplicações desktop e muito mais.
O que é Node.js?
Em termos simples, Node.js é um ambiente de execução que permite rodar código JavaScript fora do navegador. Baseado no motor V8, ele oferece funcionalidades adicionais como manipulação de arquivos, comunicação via rede e entrada/saída assíncrona — recursos normalmente indisponíveis no browser. Isso expandiu drasticamente o uso do JavaScript, fomentando uma comunidade ativa e impulsionando projetos como motores de jogos (Unity, Godot), servidores backend e ferramentas CLI.
Instalação e uso do Node.js
Via instalador oficial
A forma mais direta de obter o Node.js é através do site oficial:
https://nodejs.org/pt-br
Gerenciamento de versões múltiplas
Para cenários onde diferentes versões são necessárias — por exemplo, compatibilidade com pacotes nativos como node-gyp — recomenda-se utilizar gerenciadores de versão como o nvm.
Sobre o nvm
O nvm (Node Version Manager) é uma ferramenta open-source projeatda para facilitar a instalação e alternância entre múltiplas versões do Node.js.
Instalando o nvm
Basta acessar o repositório oficial no GitHub e seguir as instruções para baixar e configurar a última versão disponível.
Verificando a instalação
Confirme se tudo está funcionando corretamente com:
nvm --version
Configurando mirrors locais
Para melhor performance em regiões específicas, pode ser útil alterar as fontes padrão de download. Primeiro, localize o diretório raiz do nvm:
nvm root
Dentro desse caminho, edite ou crie o arquivo settings.txt, adicionando estas linhas:
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/
Instalando uma versão do Node.js
Liste as opções disponíveis:
nvm list available
Instale a versão desejada:
nvm install <versão>
Ativando uma instância instalada
Após a instalação, habilite-a explicitamente:
nvm use <versão>
node -v
npm -v
Listando versões instaladas
nvm list
Removendo uma versão
nvm uninstall <versão>
Gestão de dependências com npm
No desenvolvimento web tradicional, incluir bibliotecas externas exigia downloads manuais e links HTML. Com o NPM (Node Package Manager), esse processo tornou-se automatizado, semelhante ao pip do Python.
Alterando registros de pacote
Por padrão, o NPM usa o registro público centralizado em npmjs.com. Para acelerar downloads na China continental, configure um mirror alternativo:
# Verificar registro atual
npm config get registry
# Usar mirror da Taobao
npm config set registry https://registry.npmmirror.com/
# Ou Tencent Cloud
npm config set registry https://mirrors.cloud.tencent.com/npm/
# Validar mudança
npm config get registry
Caso ocorram problemas relacionados a certificados SSL durante a instalação, é possível temporariamente desabilitar a verificação rigorosa:
npm config set strict-ssl false
Arquivo principal: package.json
Este arquivo define metadados essenciais sobre o projeto, incluindo nome, versão, descrição, scripts personalizados e dependências:
{
"name": "projeto-exemplo",
"version": "1.0.0",
"description": "Demonstração de estrutura básica do package.json",
"scripts": {
"start": "node index.js",
"dev": "nodemon src/index.js",
"build": "webpack --mode production",
"lint": "eslint . --ext .js,.ts"
},
"dependencies": {
"express": "^4.18.2",
"cors": "^2.8.5"
},
"devDependencies": {
"nodemon": "^2.0.22",
"webpack": "^5.76.0",
"eslint": "^8.37.0"
}
}
- "name": Nome único do projeto (opcional).
- "version": Versão atual seguindo o formato SemVer.
- "scripts": Comandos customizados executáveis via
npm run [nome]. - "dependencies": Pacotes necessários para execução em produção.
- "devDependencies": Ferramentas auxiliares usadas apenas durante desenvolvimento.
package-lock.json
Arquivo gerado atuomaticamente após qualquer operação de instalação. Ele registra exatamente quais versões dos pacotes foram instaladas, garantindo consistência entre ambientes distintos.
Comparativo de arquivos principais
| Nome do Arquivo | Descrição | Obrigatório? | Automático? | Manutenção Manual? | Localização Típica |
|---|---|---|---|---|---|
package.json |
Define configurações gerais do projeto, incluindo dependências e scripts. | Sim | Não (requer inicialização manual) | Sim | Raiz do projeto |
package-lock.json |
Trava versões instaladas para evitar inconsistências. | Recomendado | Sim | Não | Raiz do projeto |
.npmrc |
Configurações do cliente NPM (registros, proxy, cache, etc.). | Opcional | Não | Sim | Raiz do projeto ou global (~/.npmrc) |
node_modules/ |
Pasta contendo todas as dependências instaladas localmente. | Necessário em tempo de execução | Sim | Não | Raiz do projeto |