NodeJs - alandrade21/docsCompartilhados GitHub Wiki
Nesta página:
- Instalar nodeJs
- Várias versões de Node na máquina
- Definir a versão do node por projeto
- Configurar npm
- Instalar Dependência
- Criação de componentes em TS
- Números de Versão no package.json
- Error: ENOSPC: System limit for number of file watchers reached
Dê preferência por utilizar o NVM, listado na próxima seção.
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs
sudo apt install build-essential
Testa a instalação
node -v
npm -v
Informações retiradas dessa página.
Vamos utilizar o NVM.
Pode haver versão de Angular e de Typescript instalada globalmente. Essa instalação global faz com que os comandos ng
ou tsc
sejam reconhecidos em todo o operacional.
Para verificar se esse é o caso, simplesmente digite ng
ou tsc
no terminal. Se o comando for reconhecido, então essas ferramentas estão instaladas no escopo global.
Angular e Typescript são pacotes NPM. Se eles estão em escopo global é porque eles foram instalados com npm i -g <nome do pacote>
.
Para verificar todos os pacotes instalados em escopo global, rode o comando npm list -g
.
No linux, utilizando uma instalação global de NodeJs, os pacotes instalados em escopo global ficam na pasta /usr/lib/node_modules
.
Os pacotes de Angular e Typescript que estejam no escopo global devem ser removidos. Para isso utilize os comandos abaixo:
sudo npm un -g @angular/cli
sudo npm un -g typescript
Outra opção é simplesmente apagar as pastas destes pacotes de /usr/lib/node_modules
.
Para verificar se o NodeJS está em escopo global, rode o comando node -v
. Se o comando for reconhecido, ele responde qual é a versão instalada.
O comando which node
vai responder onde o node está instalado. Você deve obter a resposta /usr/bin/node
(ou qualquer outra pasta de sistema, fora do seu domínio de usuário).
sudo apt remove nodejs
Só o pacote do node deve aparecer como candidato à remoção.
O NVM é um gerenciador/chaveador de versões do node, que utiliza a sua pasta de usuário ao invés da área do sistema.
Veja qual a versão mais recente no repositório github da ferramenta. Para instalar:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
Esse comando baixa o script de instalação e instala o NVM em ~/.nvm/
. As versões diferentes do node serão instaladas nesse diretório tb.
Essa instalação acrescenta as linhas abaixo no arquivo ~/.bashrc
:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Logo após a instalação, pode ser necessário abrir um novo terminal para o NVM ser reconhecido.
- Versão do
nvm
instalada:
nvm --version
- Listar versões instaladas do node:
nvm ls
- Listar versões disponíveis do node para instalação:
nvm ls-remote
- Instalar uma versão do node:
nvm install vX.X.X
- Instalar a versão mais recente do node:
nvm install node
- Desinstalar uma versão do node:
nvm uninstall vX.X.X
- Usar uma versão do node (vale para aquela seção de shell):
nvm use vX.X.X
- Usar a versão mais recente do node:
nvm use node
- Definir nome para uma versão do node:
nvm alias meunome vX.X.X
nvm use meunome
- Remover um nome de versão do node:
nvm unalias meunome
- Definir uma versão padrão do node:
nvm alias default vX.X.X
- Definir a versão mais nova versão padrão:
nvm alias default node
- Saber a versão atual:
nvm current
Cada versão instalada pelo comando nvm install vX.X.X
é colocada em um subdiretório da pasta ~/.nvm/versions/node/
.
Assim, se instalamos nvm install v15.11.0
, esta versão estará instalada em ~/.nvm/versions/node/v15.11.0/
.
O escopo global desta versão estará em ~/.nvm/versions/node/v15.11.0/lib/node_modules/
.
Informações retiradas da página How to run multiple Node and Angular versions simultaneously.
Versões específicas do angular tem dependências de versões específicas de node e de typescript. Esta é a tabela de versões compatíveis).
Crie um arquivo .nvmrc
na raiz do projeto e coloque dentro dele a versão do node. Ex: 12.4.0
.
Todos os comandos node agora tem que ser rodados com nvm:
- O que era rodado com
node [arguments]
, agora precisa ser rodado comnvm run [arguments]
. - O que era rodado com
npm run [nome do script] [arguments]
, agora precisa ser rodado comnvm exec npm run [nome do script] [arguments]
.
Roda os comandos abaixo depois de instalar o npm.
npm set init.author.name 'André Andrade'
npm set init.author.email '[email protected]'
npm set init.author.url 'https://github.com/alandrade21'
npm adduser
Esse último comando vai pedir seu usuário e sua senha no repositório npm, e será utilizado na hora de publicar pacotes.
Verifica as configurações feitas com o comando
npm config ls
Dependências de desenvolvimento
npm i <pacote> -D
ou
npm install @types/node --save-dev
Dependências de RunTime
npm i <pacote> -S
Crie um novo diretório de projeto para escrever o código do componente.
Entre nesse diretório e inicialize o projeto com
npm init -y
Gera o arquivo tsconfig.json
com o comando tsc --init
.
No tsconfig.json
coloca a propriedade "declaration" : true
. Isso vai gerar o arquivo de tipos .d.ts
.
Escreve o componente, de preferência no arquivo index.ts
.
Transpila o componente com tsc
. O resultado vai aparecer na pasta ./dist
.
Completa o arquivo package.json
com as entradas:
"main": "dist/index.js",
"types" : "dist/index.d.ts"
Coloque seu namespace no nome do componente: @alandrade21/<nome-do-componente>
.
Para evitar publicar um componente antes do término do seu desenvolvimento e ainda assim permitir seu uso em outros projetos, vamos linkar a pasta do componente no projeto.
Vai para a pasta do componente e roda o comando:
sudo npm link
Isso cria um link global para o componente em /usr/lib/node_modules/@alandrade21/<nome-do-componente>
. Por isso a permissão de sudo.
Vai para a pasta do projeto que usará o componente e roda o comando:
npm link <nome-do-componente>
Coloca a entrada files
no package.json
, da seguinte forma:
“files”: [“dist/**/*”]
Isso garante que apenas os arquivos necessários serão utilizados no empacotamento.
Loga no repositório npm com o comando:
npm login
Dentro do diretório do componente a ser publicado, publica o pacote com o comando:
npm publish
Desfaça o link no projeto que consome o compenente.
npm uninstall --no-save <nome-do-componente>
Instale o pacote a partir do npm:
npm install
O componente já está no package.json
, é só rodar o comando acima para usar a versão publicada.
Para apagar o link global, vai para o diretório do componente e roda:
npm uninstall
Número de versão composto por Major.Minor.Patch
.
-
~
: Atualiza para versões mais novas que tenham trocado apenas o patch number. -
^
: Atualiza para versões mais novas que tenham trocado ou o patch number ou minor number.
Aumentar o limite de user watches no sistema operacional.
Verificar o limite atual:
cat /proc/sys/fs/inotify/max_user_watches
Ajustar o novo limite no arquivo /etc/sysctl.conf
:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
O comando acima acrescenta a linha fs.inotify.max_user_watches=524288
ao arquivo /etc/sysctl.conf
e em seguida pede ao kernel para recarregar as novas configurações.
Verificar o novo limite:
cat /proc/sys/fs/inotify/max_user_watches