2014-11-14 163 views
2

背景
我們遇到的問題與Windows構建系統碰到文件路徑當節點模塊文件夾有有在其內物品太長錯誤路徑超過260個字符。如何防止NPM從重新排序devDependencies安裝<package> --save-dev的

我們發現在devDependencies部分的頂部添加深度嵌套的依賴關係可修復此問題。假設當npm看到一個嵌套的dependency C.1需要package A(已經在devDependencies中聲明並可用)時,npm不會將dependency A添加到dependency C.1的node_modules目錄中。

問題
我看到我的本地機器上的問題是,運行在npm install <package> --save-dev重新排序devDependencies包按字母順序,但爲了NPM工藝包及其依賴的問題。如果我檢查了這一點,那麼構建系統會遇到相同的文件路徑太長的錯誤。

即如果package Apackage Cdependency C.1需要package A後,再故宮將增加package Adependency C.1的node_modules文件夾。

我不知道這個重新排序是否只在我的機器上,因爲我之前沒有看到npm重新排序依賴關係。

有沒有人見過這個或知道如何制止這種行爲?

版本
節點:v0.10.32
NPM:v1.4.28

附註:我讀過,NPM 2.0或未來版本將分析依賴性的層次結構,找到重複的包,並且只在文件系統上引用它們一次,但此時不會升級到npm 2.0。

+0

'npm shrinkwrap'有同樣的缺陷。 – Funkodebat 2014-11-14 16:53:27

+0

@Funkodebat你注意到這是否是最近的變化?我記得看到npm只是追加到列表的底部。 – Jerry 2014-11-14 17:02:51

+0

實際上它可能不存在於npm nemore,我有一段時間的舊版本。我最終創建了一個腳本,只要它檢測到'package就會調用'npm shrinkwrap'。json「發生了變化,否則它會不斷提交shrinkwrap,因爲它不斷重新生成 – Funkodebat 2014-11-14 17:05:17

回答

0

我看到這個工作的唯一方法是有某種前腳本的其中[希望]將依賴文件已被更新,但已安裝該軟件包前後運行From the npm site

在節點的當前版本,這樣做的標準方法是使用 .gyp文件。如果你有在 你的包的根.gyp擴展名的文件,然後NPM將運行適當的節點GYP在安裝時

自動命令 如果不工作,你將需要使用MakeFile並重寫package.json文件。由於某些項目需要某種預編譯方式,這並不太常見,您只需指示您的團隊運行單獨的命令來安裝npm軟件包。

相關問題