상태
Windows에서 호스팅하는 개발 환경에서 gulp 및 관련 프런트 엔드 도구 체인을 사용하고 싶습니다. node_modules 폴더 그래프가 파일을 복사하기에 너무 긴 Windows 파일 경로를 만들기 때문에 Browser-Sync와 같은 gulp 플러그인을 사용하려는 벽에 부딪 혔습니다. 노드 커뮤니티가 향후 Windows에서 npm 사용성을 개선하기 위해 제공 할 수있는 것과 제공하지 않을 수있는 것에 관계없이 지금 바로 Windows에서이 문제를 처리하기위한 실용적인 접근 방식을 원합니다.
2 개의 질문
의도 한대로 작동하는 Windows 용 npm 워크 플로가 있습니까? "명령을 실행하고 파일 설치"(예 : OSX의 npm, Linux의 npm, ruby gems 또는 nuget과 비슷 함) 사용할 때마다 수동 파일 편집, 심볼릭 링크 등을 조작하고 싶지 않습니다. Windows의 npm.
Windows API 파일 경로 제한을 해결하기 위해 npm 및 노드 실행을위한 잘 문서화되고 안정적인 Cygwin 워크 플로가 있습니까?
아래 나열된 피투성이 세부 정보 ...
일반적인 문제
- 표준 Windows 명령 프롬프트에서 npm install을 실행하면 깊이 중첩 된 node_modules 계층에서 실패합니다.
- Joyent의 github repo 스레드에 따르면 이것은 Windows 중심 환경의 개발자를위한 적절한 해결 방법이없는 인정 된 문제 입니다. ( 정말? )
- NT 커널은 최대 32,767 자의 파일 경로 길이를 지원합니다.
- Windows API의 MAXPATH는 260 자로 제한됩니다.
- 포함하여 Windows API 핸들 파일의 모든 주요 윈도우 쉘에 대한 운영 및 이것 저것 : 등 탐색기, CMD, 파워 쉘, MYSgit 강타는 ( ? MS는 정말 얼마나 오래는 NTFS는 주변에있다? )
- Cygwin은 긴 파일 경로를 지원하지만 npm.cmd는 crlf 형식화로 인해 기본적으로 작동하지 않습니다. Cygwin과 함께 작동하도록 npm에서 DOS2Unix 변환을 시도했지만 다른 문제가있는 것 같습니다.
내 현재 해킹
- "n"폴더를 C : \의 루트에 준비 영역으로 만듭니다. 이렇게하면 폴더 경로가 단축됩니다.
- "n"폴더 내에서 npm을 실행하여 필요한 모듈을 설치합니다.
- Cygwin을 실행하고 cp를 사용하여 node_modules 폴더를 대상 프로젝트에 복사하십시오.
- 종속성이 변경되거나 새 프로젝트를 시작해야 할 때 헹구고 반복하십시오.
기타 불쾌한 해결 방법
심볼릭 링크 는 파일 경로를 단축하는 데 사용할 수 있지만 이는 복잡한 해킹입니다. npm 생태계가 성장함에 따라 중첩 된 종속성 체인이 너무 길어지고이 해결 방법을 사용할 수 없게됩니다.
루트 폴더의 package.json 파일에 모든 종속성을 추가하는 것은 내가 만난 한 스레드에서 언급되었습니다. 이 방법은 폴더 구조를 평평하게하고 중복 모듈의로드를 방지하지만이 해결 방법은 부 자연스럽게 느껴집니다. 또한 수동으로 또는 일부 해키 스크립트를 사용하여 설치 후 파일 및 폴더를 조작해야하기 때문에 npm의 유용성, 내구성 및 생산성을 떨어 뜨립니다. 이 접근 방식은 또한 Symbolic Links 접근 방식이 결국 겪을 수있는 동일한 운명에 취약합니다.