簡體   English   中英

有沒有一種方法可以將package.json文件中的依賴項安裝到其他目​​錄中?

[英]Is there a way to install dependencies from a package.json file into a different directory?

我想知道是否有一種方法可以將package.json文件的依賴項放入另一個目錄中。 場景是這樣的:

我有一個正在使用git和post-receive hook部署的項目。 當我想部署項目時,我將其推送到服務器上的裸git repo,然后將其克隆到一個單獨的文件夾中(從而使文件可用),運行npm install來安裝依賴項,運行構建(在在這種情況下為grunt ),將構建文件移動到Web服務器托管的文件夾中,覆蓋所有較舊的文件,然后通過刪除克隆文件夾來對其進行清理。

不幸的是,這還具有清除node_modules文件夾的node_modules ,這意味着必須在下一個構建中安裝一組新的依賴項,如果我要快速部署,則需要一些時間。

我的問題背后的原因本質上是想知道是否有比我目前更優雅的解決方案。 有沒有一種方法可以將依賴項安裝到服務器上的依賴項目錄,然后從那里運行所有構建? 這樣一來,我可以將所有模塊都放在一個位置,並在服務器上運行的其他內部版本也使用這些軟件包,同時還要添加它們所需的任何其他依賴項。

到目前為止,我的研究尚未證明是成功的-我嘗試過跑步

npm install /some_folder --prefix /other_folder

但這會對創建如下目錄結構產生不利影響:

/
├── some_folder
|  ├── <various files>
|  └── package.json
└── other_folder
   └── node_modules/
      └── some_folder/
         ├── <various files from first folder>
         ├── package.json
         └── node_modules/

對於具有中央依賴項目錄來說,這實際上是行不通的。

我還發現了一個有關使用符號鏈接的問題。 那將如何工作?

聽起來您實際上想要的是在構建服務器上具有本地程序包緩存。 NPM 已經做到了。 但是,默認情況下:

發出非必需的注冊表請求的命令(例如搜索和查看或完成腳本)通常指定最小超時。 如果.cache.json文件小於指定的超時時間,則它們不會向注冊表發出HTTP請求。

這不包括軟件包安裝。 您可以通過執行以下操作來規避此問題:

npm --cache-min 9999999 install <package-name>

很少有人要求對此命令有一個更好的接口,因為這是很常見的要求。

也有幾個項目提供替代機制:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM