我想用杯和相關的前端工具鏈在Windows託管開發環境。我正在嘗試使用諸如Browser-Sync之類的gulp插件,因爲node_modules文件夾圖將扇區窗口文件路徑浪費太長以至於無法複製文件。我希望現在在Windows上處理這個問題的實用方法,無論Node社區將來可能提供或不提供的npm在Windows上的可用性。
2問題
是否有適用於Windows的新公共管理的工作流程,只是工作它的目的的方法是什麼? 「運行命令和文件安裝」(例如,可以與OSX上的npm,Linux上的npm,ruby gems或甚至nuget相媲美)每次我使用時,我都不想擺弄一大堆手動文件編輯,符號鏈接等Windows上的npm。
是否有一個記錄良好,穩定的Cygwin工作流程,用於npm和節點執行以解決Windows API文件路徑限制?下面列出
血淋淋的細節...
一般問題
- 運行NPM從一個標準的Windows命令提示符下安裝失敗的深度嵌套node_modules層次。
- Per Joyent的github repo線程this is an acknowledged issue對於Windows中心環境中的開發人員沒有適合的解決方法。 (真的嗎?)
- NT內核支持多達32,767個字符的文件路徑長度。
- Windows API的MAXPATH限制爲260個字符。
- 的Windows API處理文件操作對所有主要的Windows外殼和諸如此類的東西,包括:資源管理器中,CMD,PowerShell中,MYSgit慶典等(?MS真的有多久NTFS一直圍繞?)
- Cygwin的支持長文件路徑,但由於crlf格式化,npm.cmd無法正常工作。我嘗試了npm上的DOS2Unix轉換來使它與Cygwin一起工作,但似乎還有其他問題。
我現在的黑客
- 創建一個 「N」 文件夾作爲C的根目錄的臨時區域:\,因爲這 縮短我的文件夾路徑。
- 在「n」文件夾內運行npm以安裝我需要的任何模塊。
- 啓動Cygwin並使用cp將node_modules文件夾複製到目標項目中。
- 當依賴關係發生變化或需要啓動新項目時,請清洗並重復。
其它不受歡迎的解決辦法
符號鏈接可用於縮短文件路徑,但這些缺憾黑客。隨着npm生態系統的發展,嵌套的依賴鏈將變得太長,並且這種解決方法變得無法使用。
將所有依賴添加到根文件夾的package.json文件在我遇到的一個線程中提到。雖然這種方法會使文件夾結構扁平化並防止重複模塊的加載,但此解決方法感覺不自然。它還會殺死npm的可用性,耐久性和生產力,因爲您必須手動或使用一些黑客腳本來手動安裝文件和文件夾。該方法也容易受到符號鏈接方法可能最終遭受的相同命運的影響。
我幾乎以爲我這個解決。通過在以下兩個文件上運行dos2unix util,我得到了Cygwin與npm的協同工作:npm.cmd和npm – 2014-10-04 00:30:21
Windows API路徑限制使得npm不可用,因爲一些npm模塊使用Visual Studio來構建文件。這是我在npm瀏覽器同步時收到的錯誤:C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \ Microsoft.CppBuild.targets(301,5):錯誤MS B3491:可能不要將文件寫入文件「Release \ obj \ validation \ validation.tlog \ validation.lastbuilds tate」。指定的路徑,文件名或這兩者太長。完全限定的文件名必須少於260個字符,且目錄名稱必須少於248個字符。 – 2014-10-04 00:33:59
我可能有一個「taffy-pulling」方法來獲取在Windows上加載npm的節點模塊。它涉及以下幾個步驟:npm install,npm dedupe,npm shrink和rm -r node_modules。重複這樣做似乎在某種程度上消除了長文件路徑,但這有點像拉太妃糖(例如,直到你完成了才完成)。任何人編寫這個或編寫一個自動化工具,使這個更多的交鑰匙? – 2014-10-04 03:04:46