Install the latest nodejs from source
This commit is contained in:
@@ -1,14 +1,34 @@
|
||||
# [nodejs-cookbook](https://github.com/redguide/nodejs)
|
||||
[](https://supermarket.getchef.com/cookbooks/nodejs) [](https://travis-ci.org/redguide/nodejs)
|
||||
[](https://gitter.im/redguide/nodejs)
|
||||
|
||||
## DESCRIPTION
|
||||
[](https://supermarket.getchef.com/cookbooks/nodejs) [](https://travis-ci.org/redguide/nodejs) [](https://gitter.im/redguide/nodejs)
|
||||
|
||||
Installs node.js/io.js and manage npm
|
||||
Installs node.js/io.js and manages npm
|
||||
|
||||
## USAGE
|
||||
## Requirements
|
||||
|
||||
### Platforms
|
||||
|
||||
- Debian/Ubuntu
|
||||
- RHEL/CentOS/Scientific/Amazon/Oracle
|
||||
|
||||
Note: Source installs require GCC 4.8+, which is not included on older distro releases
|
||||
|
||||
### Chef
|
||||
|
||||
- Chef 11+
|
||||
|
||||
### Cookbooks
|
||||
|
||||
- yum-epel
|
||||
- build-essential
|
||||
- ark
|
||||
- apt
|
||||
- homebrew
|
||||
|
||||
## Usage
|
||||
|
||||
Include the nodejs recipe to install node on your system based on the default installation method:
|
||||
|
||||
```chef
|
||||
include_recipe "nodejs"
|
||||
```
|
||||
@@ -16,6 +36,7 @@ include_recipe "nodejs"
|
||||
### Engine
|
||||
|
||||
You can select different engine by setting `node['nodejs']['engine']`
|
||||
|
||||
```
|
||||
node['nodejs']['engine'] => 'node' # default
|
||||
node['nodejs']['engine'] => 'iojs'
|
||||
@@ -35,22 +56,28 @@ 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).
|
||||
|
||||
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).
|
||||
|
||||
#### Binary
|
||||
|
||||
Install node from official prebuilt binaries:
|
||||
|
||||
```chef
|
||||
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'
|
||||
```
|
||||
|
||||
#### Source
|
||||
|
||||
Install node from sources:
|
||||
|
||||
```chef
|
||||
node['nodejs']['install_method'] = 'source'
|
||||
include_recipe "nodejs"
|
||||
@@ -60,36 +87,43 @@ include_recipe "nodejs::nodejs_from_source"
|
||||
|
||||
## NPM
|
||||
|
||||
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']`
|
||||
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']`
|
||||
|
||||
```chef
|
||||
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']`.
|
||||
|
||||
## LWRP
|
||||
## Custom Resources (Providers)
|
||||
|
||||
### nodejs_npm
|
||||
|
||||
`nodejs_npm` let you install npm packages from various sources:
|
||||
* npm registry:
|
||||
* name: `attribute :package`
|
||||
* version: `attribute :version` (optionnal)
|
||||
* url: `attribute :url`
|
||||
* for git use `git://{your_repo}`
|
||||
* from a json (packages.json by default): `attribute :json`
|
||||
* use `true` for default
|
||||
* use a `String` to specify json file
|
||||
|
||||
|
||||
- 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](https://docs.npmjs.com/private-modules/intro) 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']`
|
||||
|
||||
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).
|
||||
|
||||
### Packages
|
||||
@@ -119,6 +153,7 @@ nodejs_npm "my_private_module" do
|
||||
options ['--production'] # Only install dependencies. Skip devDependencies
|
||||
end
|
||||
```
|
||||
|
||||
[Working Examples](test/cookbooks/nodejs_test/recipes/npm.rb)
|
||||
|
||||
Or add packages via attributes (which accept the same attributes as the LWRP above):
|
||||
@@ -147,9 +182,22 @@ Or add packages via attributes (which accept the same attributes as the LWRP abo
|
||||
}
|
||||
```
|
||||
|
||||
## AUTHORS
|
||||
## License & Authors
|
||||
|
||||
* Marius Ducea (marius@promethost.com)
|
||||
* Nathan L Smith (nlloyds@gmail.com)
|
||||
* Guilhem Lettron (guilhem@lettron.fr)
|
||||
* Barthelemy Vessemont (bvessemont@gmail.com)
|
||||
**Author:** Marius Ducea (marius@promethost.com) **Author:** Nathan L Smith (nlloyds@gmail.com) **Author:** Guilhem Lettron (guilhem@lettron.fr) **Author:** Barthelemy Vessemont (bvessemont@gmail.com)
|
||||
|
||||
**Copyright:** 2008-2016, Chef Software, Inc.
|
||||
|
||||
```
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user