Installs node.js/io.js and manage npm
Include the nodejs recipe to install node on your system based on the default installation method:
include_recipe "nodejs"
You can select different engine by setting node['nodejs']['engine']
node['nodejs']['engine'] => 'node' # default
node['nodejs']['engine'] => 'iojs'
You can also use recipes nodejs::nodejs
or nodejs::iojs
.
Install node from packages:
node['nodejs']['install_method'] = 'package' # Not necessary because it's the default
include_recipe "nodejs"
# Or
include_recipe "nodejs::nodejs_from_package"
Note that only apt (Ubuntu, Debian) appears to have up to date packages available.
Centos, RHEL, etc are non-functional (try nodejs_from_binary
for those).
Install node from official prebuilt binaries:
node['nodejs']['install_method'] = 'binary'
include_recipe "nodejs"
# Or
include_recipe "nodejs::nodejs_from_binary"
# Or set a specific version of nodejs to be installed
node.default['nodejs']['install_method'] = 'binary'
node.default['nodejs']['version'] = '5.9.0'
node.default['nodejs']['binary']['checksum'] = '99c4136cf61761fac5ac57f80544140a3793b63e00a65d4a0e528c9db328bf40'
Install node from sources:
node['nodejs']['install_method'] = 'source'
include_recipe "nodejs"
# Or
include_recipe "nodejs::nodejs_from_source"
Npm is included in nodejs installs by default.
By default, we are using it and call it embedded
.
Adding recipe nodejs::npm
assure you to have npm installed and let you choose install method with node['nodejs']['npm']['install_method']
include_recipe "nodejs::npm"
Warning: This recipe will include the nodejs
recipe, which by default includes nodejs::nodejs_from_package
if you did not set node['nodejs']['install_method']
.
nodejs_npm
let you install npm packages from various sources:
- npm registry:
- name:
attribute :package
- version:
attribute :version
(optional) - url:
attribute :url
- for git use
git://{your_repo}
- from a json (package.json by default):
attribute :json
- use
true
for default - use a
String
to specify json file
Packages can be installed globally (by default) or in a directory (by using attribute :path
)
You can specify an NPM_TOKEN
environment variable for accessing NPM private modules by using attribute :npm_token
You can append more specific options to npm command with attribute :options
array :
- use an array of options (w/ dash), they will be added to npm call.
- ex:
['--production','--force']
or['--force-latest']
This LWRP attempts to use vanilla npm as much as possible (no custom wrapper).
nodejs_npm "express"
nodejs_npm "async" do
version "0.6.2"
end
nodejs_npm "request" do
url "github mikeal/request"
end
nodejs_npm "grunt" do
path "/home/random/grunt"
json true
user "random"
end
nodejs_npm "my_private_module" do
path "/home/random/myproject" # The root path to your project, containing a package.json file
json true
npm_token "12345-abcde-e5d4c3b2a1"
user "random"
options ['--production'] # Only install dependencies. Skip devDependencies
end
Or add packages via attributes (which accept the same attributes as the LWRP above):
"nodejs": {
"npm_packages": [
{
"name": "express"
},
{
"name": "async",
"version": "0.6.2"
},
{
"name": "request",
"url": "github mikeal/request"
}
{
"name": "grunt",
"path": "/home/random/grunt",
"json": true,
"user": "random"
}
]
}
- Marius Ducea ([email protected])
- Nathan L Smith ([email protected])
- Guilhem Lettron ([email protected])
- Barthelemy Vessemont ([email protected])