Upgrade nodejs to the latest version from the repo

This is possible in newer versions of the nodejs cookbook, by setting
the `node["nodejs"]["package_action"]["nodejs"]` attribute to `:upgrade`
This commit is contained in:
Greg Karékinian
2021-03-30 13:58:55 +02:00
parent 9fc49deafe
commit edf2e071e4
18 changed files with 234 additions and 77 deletions

View File

@@ -1,6 +1,6 @@
# [nodejs-cookbook](https://github.com/redguide/nodejs)
[![CK Version](http://img.shields.io/cookbook/v/nodejs.svg?branch=master)](https://supermarket.chef.io/cookbooks/nodejs) [![Build Status](https://img.shields.io/travis/redguide/nodejs.svg)](https://travis-ci.org/redguide/nodejs) [![Gitter chat](https://badges.gitter.im/redguide/nodejs.svg)](https://gitter.im/redguide/nodejs)
[![CK Version](http://img.shields.io/cookbook/v/nodejs.svg?branch=master)](https://supermarket.chef.io/cookbooks/nodejs) [![Build Status](https://img.shields.io/travis/redguide/nodejs.svg)](https://travis-ci.org/redguide/nodejs)
Installs node.js/npm and includes a resource for managing npm packages
@@ -11,23 +11,23 @@ Installs node.js/npm and includes a resource for managing npm packages
- Debian/Ubuntu
- RHEL/CentOS/Scientific/Amazon/Oracle
- openSUSE
- Windows
Note: Source installs require GCC 4.8+, which is not included on older distro releases
### Chef
- Chef 12.14+
- Chef Infra Client 14+
### Cookbooks
- build-essential
- ark
## Usage
Include the nodejs recipe to install node on your system based on the default installation method:
```chef
```ruby
include_recipe "nodejs"
```
@@ -37,7 +37,7 @@ include_recipe "nodejs"
Install node from packages:
```chef
```ruby
node['nodejs']['install_method'] = 'package' # Not necessary because it's the default
include_recipe "nodejs"
# Or
@@ -50,7 +50,7 @@ By default this will setup deb/rpm repositories from nodesource.com, which inclu
Install node from official prebuilt binaries:
```chef
```ruby
node['nodejs']['install_method'] = 'binary'
include_recipe "nodejs"
@@ -72,18 +72,29 @@ node.default['nodejs']['binary']['checksum'] = '0bd86f2a39221b532172c7d1acb57f0b
Install node from sources:
```chef
```ruby
node['nodejs']['install_method'] = 'source'
include_recipe "nodejs"
# Or
include_recipe "nodejs::nodejs_from_source"
```
#### Chocolatey
Install node from chocolatey:
```chef
node['nodejs']['install_method'] = 'chocolatey'
include_recipe "nodejs"
# Or
include_recipe "nodejs::nodejs_from_chocolatey"
```
## 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']`
```chef
```ruby
include_recipe "nodejs::npm"
```
@@ -95,7 +106,7 @@ _Warning:_ This recipe will include the `nodejs` recipe, which by default includ
note: This resource was previously named nodejs_npm. Calls to that resource name will still function, but cookbooks should be updated for the new npm_package resource name.
`npm_package` let you install npm packages from various sources:
`npm_package` lets you install npm packages from various sources:
- npm registry:
@@ -115,11 +126,17 @@ Packages can be installed globally (by default) or in a directory (by using `att
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 specify a `NODE_ENV` environment variable, in the case that some element of your installation depends on this by using `attribute :node_env`. E.g., using [`node-config`](https://www.npmjs.com/package/config) as part of your postinstall script. Please note that adding the `--production` option will override this to `NODE_ENV=production`.
You can append more specific options to npm command with `attribute :options` array :
You can specify auto_update as false to stop the npm install command from running and updating an installed package. Running the command will update packages within restrictions imposed by a package.json file. The default behavior is to update automatically.
- use an array of options (w/ dash), they will be added to npm call.
- ex: `['--production','--force']` or `['--force-latest']`
You can specify live_stream true for the resource to have the package install information included in the chef-client log outout for better npm package diagnostics and trouble shooting.
This LWRP attempts to use vanilla npm as much as possible (no custom wrapper).
### Packages
@@ -139,6 +156,7 @@ npm_package 'grunt' do
path '/home/random/grunt'
json true
user 'random'
node_env 'staging'
end
npm_package 'my_private_module' do
@@ -180,9 +198,12 @@ Or add packages via attributes (which accept the same attributes as the LWRP abo
## License & Authors
**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)
**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-2017, Chef Software, Inc.
**Copyright:** Chef Software, Inc.
```
Licensed under the Apache License, Version 2.0 (the "License");