Situação
Quero usar o gulp e as cadeias de ferramentas de front-end relacionadas em ambientes de desenvolvimento hospedados no Windows. Eu estou batendo uma parede tentando usar plug-ins gulp como o Browser-Sync, porque o gráfico da pasta node_modules se espalha tornando os caminhos de arquivo do Windows muito longos para copiar os arquivos. Eu gostaria de uma abordagem pragmática para lidar com esse problema agora no Windows, independentemente do que a comunidade do Node possa ou não fornecer para melhorar a usabilidade do npm no Windows no futuro.
2 perguntas
Existe um fluxo de trabalho npm para Windows que funciona da maneira pretendida? "execute o comando e a instalação dos arquivos" (por exemplo, comparável a npm no OSX, npm no Linux, ruby gems ou mesmo nuget) Eu não quero mexer com um monte de edições manuais de arquivos, links simbólicos, etc. toda vez que eu uso npm no Windows.
Existe um fluxo de trabalho Cygwin estável e bem documentado para npm e execução de nó para contornar os limites de caminho de arquivo da API do Windows?
Detalhes sangrentos listados abaixo ...
Problema geral
- A execução do npm install a partir de um prompt de comando padrão do Windows falha em hierarquias node_modules profundamente aninhadas.
- De acordo com o thread de repositório do github de Joyent, esse é um problema reconhecido, sem soluções alternativas palatáveis para desenvolvedores em ambientes centrados no Windows. (É mesmo ? )
- O kernel do NT suporta comprimentos de caminho de arquivo de até 32.767 caracteres.
- MAXPATH da API do Windows é limitado a 260 caracteres.
- A API do Windows lida com operações de arquivo para todos os principais shells do Windows e outros enfeites, incluindo: Explorer, CMD, Powershell, MYSgit bash, etc. ( MS realmente? Há quanto tempo o NTFS existe? )
- Cygwin oferece suporte a caminhos de arquivo longos, mas npm.cmd não funciona imediatamente devido à formatação crlf. Eu tentei a transformação DOS2Unix no npm para fazê-la funcionar com o Cygwin, mas parece haver outros problemas com isso.
Meu hack atual
- Crie uma pasta "n" como uma área de teste na raiz de C: \, porque isso encurta o caminho da minha pasta.
- Execute o npm dentro da pasta "n" para instalar os módulos de acordo com as necessidades.
- Abra o Cygwin e use cp para copiar a pasta node_modules em um projeto de destino.
- Enxágue e repita quando as dependências mudarem ou quando eu precisar ativar um novo projeto.
Outras soluções alternativas desagradáveis
Links simbólicos podem ser usados para encurtar caminhos de arquivo, mas esses são hacks malucos. Conforme o ecossistema npm cresce, as cadeias de dependência aninhadas se tornam muito longas e essa solução alternativa se torna inutilizável.
Adicionar TODAS as dependências ao arquivo package.json da pasta raiz foi mencionado em um tópico que encontrei. Embora essa abordagem aplaine a estrutura de pastas e evite o carregamento de módulos duplicados, essa solução alternativa parece pouco natural. Ele também mata a usabilidade, durabilidade e produtividade do npm, porque você tem que mexer com arquivos e pastas pós-instalação manualmente ou com alguns scripts hacky. A abordagem também é vulnerável ao mesmo destino que a abordagem de Links Simbólicos pode eventualmente sofrer.