package.json适用于不同的环境?

时间:2012-03-07 07:10:00

标签: node.js heroku npm

我有一个node.js应用程序,我刚刚部署到Heroku,它取决于canvas模块。但是,该模块需要cairo图形库和长篇故事,我需要使用this fork of canvas附带的预先编写的版本。

通常,我的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中有另一个部分,我可以在dev环境中“覆盖”画布依赖性吗?

3 个答案:

答案 0 :(得分:3)

有一个名为penv的工具看起来很有希望。从他们的网站:

  

有时我们需要为我们的不同环境(如生产,登台和开发)提供不同的package.json属性。 (例如:jitsu部署)

     

使用penv,您可以使用在environment.json文件中定义的属性自定义package.json文件。

实际上现在就试试吧。

答案 1 :(得分:2)

从未使用过Heroku,但package.json格式定义了devDependencies字段,请参阅Nodejitsu cheatsheet。然后使用$ npm install -d安装。

答案 2 :(得分:1)

也许您可以在Git中使用Heroku特定分支并在部署之前合并到该分支中(确保您不会合并到package.json上)。