Erick Patrick

Diretórios compartilhados, Node e Symlinks no Homestead

Um grande problema se estiver no Windows

Algumas vezes, ser desenvolvedor web e trabalhar com Windows é penoso, tortuoso. Uma dessas vezes é quando você trabalha com máquinas virtuais com sistemas *NIX e ter uma pasta compartilhada entre a máquina hospedeira e a visitante. Adicione, agora, uma pitada de Node e PHP, e saberá do que estou falando.

Nesse artigo, falo sobre os problema que enfreitei ao tentar usar Node e o Gulp dentro da box para Vagrant, Homestead, que é própria para desenvolvimento com PHP, embora já venha com Node instalado.

No momento desse post, estou de férias e tentando colocar para frente alguns projetos paralelos. Neles, quero por em prática o máximo das melhores práticas possível, bem como aprimorar meu fluxo de trabalho.

No meu trabalho diário, do qual estou de férias, uso C#.net, MS MVC Framework, Visual Studio e SQL Server. Contudo, sou bom mesmo é em PHP, principalmente, por programar com a linguagem desde os meus 12 anos (tenho 26 anos, hoje).

Para esse projeto, escolhi usar o Virtual Box, o Vagrant e o Laravel Homestead como minha ambiente de trabalho, pela facilidade de instalação e configuração.. Taylor Otwell, o criador do Laravel, fez um excelente trabalho com a box Laravel Homestead, colocando tudo que é necessário para um desenvolvedor de Larvel trabalhar em uma máquina de desenvolvimento.

Contudo, apesar de ser anunciado que já vem com Node, NPM, Grunt e Gulp instalados, eles não funcionam nas versões da VM que estão em pasta compartilhadas, gerando erros (error: enotempty and error: etxtbsy, unlink, in my case).

Após pesquisar um pouco, descobri que esse problema é porque o Node não consegue fazer symlink funcionar em pastas compartilhadas com a VM. Alguns conseguiram fazer funcionar maravilhosamente bem (como o Jeffrey Way fez em seu tutorial — ele usa Mac, mas não tenho certeza que sistema *Nix permitam isso, mas…), entretanto, aconselho instalar e executar todos os comandos relacionados ao Node dentro da máquina hospedeira, ao invés da máquina convidada.

Passei algumas horas procurando sobre isso e descobri que essa é a melhor coisa a se fazer quando se está nessa situação. Espero que tenha curtido essa dica.