2015-01-08 172 views
2

我有一個標準的package.json文件,用於我的項目使用的軟件包列表。npm的package.json的替代品(適用於全局安裝的軟件包)

我還需要安裝一些全局包。相反,手動這樣做的,我想列出他們在一個global.json配置文件,這樣我可以這樣做:

npm install -g -f global.json 

-f標誌似乎並不爲NPM存在嗎?是否有可能specifiy替代依賴列表,而不是標準的package.json

+0

可能重複的工作[安裝「全球」 NPM依賴通過的package.json(http://stackoverflow.com/questions/14657170/安裝全球npm依賴通過包json) – laggingreflex

+0

@laggingreflex: 「全球」部分並不是我真正感興趣的部分;我真正想要的是能夠指定一個* alternative *'package2.json'配置文件(應用程序將用於全局包,但這僅僅是一個例子)。這怎麼能爲'npm'完成?是否有任何標誌指定配置文件的名稱,或者是'package.json'硬連線(!)到npm代碼庫中? – dangonfast

回答

3

文件名package.json實際上是硬編碼到故宮的源代碼,並使用配置選項或命令行標誌,你不能​​改變它。

儘管這不是開發人員驗證的原因,但我懷疑不允許這樣做的原因是它會破壞依賴關係解決方案。如果程序包A將其package.json重命名爲myapp.json,並且程序包B將A指定爲其依賴項,那麼npm將無法讀取和安裝A的依賴關係(或關於該事項的任何元信息),因爲非 - 標準package.json的名字。

如果search npm's repo,你會發現多無論是在源和直接引用串的package.json測試提到。

PS。如果你的應用程序需要一個NPM模塊,在全球範圍內安裝了,就應該把

  1. 顯然,在README說明這一點,並在運行時檢測其存在(並打印一個不錯的錯誤信息給用戶,如果缺少它)
  2. 投入時間和精力使其與本地安裝(主觀首選)的
+0

Thx。你知道決定使package.json成爲強制文件名的基本原理嗎?大多數工具都具有合理的默認設置,並且可以使用命令行標誌覆蓋該默認設置...... – dangonfast

+0

確實,但並非所有的編程語言(及其軟件包管理器)都可以讓您享受每個模塊的依賴關係,相比之下每應用程序依賴性,即在PHP中,您不能加載模塊兩次,每次使用不同的版本,因爲它會導致致命錯誤。而在Node中,每個模塊都可能具有依賴關係,而這些依賴關係可能具有相同的依賴關係,並且它們都可以工作。我已經用更多信息更新了答案,請查看。 –

相關問題