tjanczuk / git-azure

Deploy multiple node.js applications to Windows Azure from MacOS using Git
Other
61 stars 11 forks source link

SxS support for node versions #25

Closed tjanczuk closed 12 years ago

tjanczuk commented 12 years ago

This is the design:

The package.json file at the root of the repository declares a list of semver versions of node engines that will be available to applications checked into the repository. For example:

{
    "azure": {
        "engines": [ "0.6.19", "0.7.9" ]
    }
}

Each node engine version must be downloadable from the http://nodejs.org/dist/v{version}/node.exe location.

If the package.json file at the root of the repository does not specify the engines, ['0.6.19'] is assumed (this default will be upgraded as new stable versions are released).

Next, each individual application declares the semver constraints of the node engine they require using the regular mechanisms of package.json, e.g.

{
    "engines": { 
        "node": "> 0.7.1 || 0.6.3" 
    }
}

At runtime, git-azure will run this application using the maximum node version from the installed versions of node that satisfies the semver constraint of the application.

So if you want to run an application with a particular version of node, make sure that version is listed in the package.json file at the root of the repository as well require the exact version in the package.json file of the application.

You can use git azure app --show to validate that the installed versions of node are sufficient to run all applications in the repository (if they are not, a validation error will appear).