Desenvolvimento Angular com nodeenv

Uma ferramenta muito útil do Python quando se quer desenvolver sites com Angular é o pacote nodeenv. O nodeenv basicamente faz pelo JavaScript o que o virtualenv faz pelo Python: permitir instalar localmente outras versões do node.js no seu usuário local ou diretório do projeto e apontar a configuração (PATH) para o novo caminho com um simples comando do terminal. Isso é útil quando você está desenvolvendo aplicações web que exigem versões diferentes do Angular. E você nem precisa ter o node pré-instalado na máquina, bastando para isso o Python com nodeenv.

Uma ideia para forçar o seu projeto a sempre ter a versão correta do node.js para executá-lo é criar um ambiente virtual no próprio repositório do projeto e NÃO instalar o node.js para o sistema inteiro. Aí você não corre o risco de executar o ambiente com a versão errada do interpretador e pacotes incompatíveis. Você pode ter um novo node.js funcionando completamente em questão de segundos. Felizmente o nodeenv está disponível diretamente no Fedora e Debian, mas pode ser instalado também com o comando:

[pedro@fedora ~]$ sudo pip install nodeenv

Você pode inclusive instalá-lo no mesmo projeto que o virtualenv se não quiser instalar nodeenv no sistema inteiro, basta ter um diretório separado para o Python e outro para o node.js. O comando a seguir instala uma nova cópia do interpretador no diretório env dentro do diretório do projeto:

[pedro@fedora MeuProjeto]$ nodeenv env
* Install prebuilt node (19.3.0) ..... done.

Em seguida, para ativar o node.js, basta executar:

[pedro@fedora MeuProjeto]$ . env/bin/activate
(env) [pedro@fedora MeuProjeto]$
E como podemos ver, o prompt também se altera para indicar que estamos num ambiente virtual diferente, assim como o virtualenv faz com o Python. E agora está pronto para uso, inclusive para instalar os pacotes necessários apenas ao projeto em questão:
[pedro@fedora MeuProjeto]$ npm install
Depois de terminado você pode simplesmente fechar o terminar ou desativar o ambiente virtual digitando:
(env) [pedro@fedora MeuProjeto]$ . env/bin/deactivate_node
[pedro@fedora MeuProjeto]$