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

我有一个node.js应用程序,我刚刚部署到Heroku取决于canvas模块。 但是,该模块需要开罗graphics库和长话短说,我需要使用一个precomipiled版本,这是包含在这个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中的另一个部分,我可以“覆盖”开发环境中的canvas依赖项?

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

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

有时候,我们需要一个不同的package.json属性来适应不同的环境,比如生产,分段和开发。 (例如:jitsu部署)

使用penv,您可以使用environments.json文件中定义的属性来定制您的package.json文件。

其实现在要试一试。

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