2012-03-07 120 views
5

我有一個node.js應用程序,我剛剛部署到Heroku,取決於canvas模塊。但是,該模塊需要開羅圖形庫和長話短說,我需要使用this fork of canvas附帶的預編譯版本。package.json適用於不同的環境?

通常情況下,我的package.json依賴關係是這樣的:

"dependencies" : { 
    "canvas" : "0.10.0", 
    "express" : "2.5.6", 
    "jade" : "0.20.1" 
    } 

但爲了讓我的應用程序在Heroku上工作,我必須在叉拉從GitHub

"dependencies" : { 
    "canvas" : "git://github.com/elspoono/node-canvas-heroku.git#master", 
    "express" : "2.5.6", 
    "jade" : "0.20.1" 
    } 

是它可能有一個「Heroku-only」版本的package.json?或者在package.json中有另一部分,我可以在開發環境中「覆蓋」畫布依賴關係?

+0

您是否將相同的應用程序部署到Heroku和其他地方?如果Heroku是您唯一的目標,爲什麼需要維護2個package.json文件? – Marco 2012-03-07 20:02:05

+0

本地機器,heroku機器,但我可能會在未來添加其他環境。如果其他人檢查出該項目,npm安裝將失敗,除非他們的架構與heroku的 – 2012-03-07 21:36:50

回答

2

從未使用Heroku,但package.json格式定義devDependencies字段,請參閱Nodejitsu cheatsheet。然後與$ npm install -d一起安裝。

+0

我不認爲devDependencies會覆蓋同一個軟件包的不同版本,但它確實看起來像它正在工作。然而,即使沒有--dev標誌,它似乎也在使用devDependencies。是否有一個env變量也在尋找? – 2012-03-09 15:04:14

+2

你可以配置npm在生產模式下運行,命令爲'npm config set production true'或者env變量'export NPM_CONFIG_PRODUCTION =「true」' – kevin 2012-03-09 16:13:17

1

也許你可以在Git中使用Heroku特定的分支併合併到部署之前(確保你不會合併到你的package.json中)。

+0

匹配並且如果我沒有使用git :)? – 2012-03-09 20:14:00

+3

然後你不會部署到Heroku;) – 2012-03-10 11:14:58

+0

哈哈,touché。我想我可以想出一個更好的方式來說「我希望有一種方法可以不用git」:) – 2012-03-10 17:18:48

2

有一個名爲penv的工具,看起來很有前途。從他們的網站:

有時我們需要不同的package.json屬性來適應不同的環境,例如生產,分段和開發。 (例如:jitsu部署)

使用penv,您可以使用properties.json文件中定義的屬性自定義您的package.json文件。

其實現在要試用它。

+0

試過了,完成了工作 – 2016-10-06 14:33:23

相關問題