Puppet Class: npm
- Defined in:
- puppet/modules/npm/manifests/init.pp
Overview
Class: npm
Provision npm dependency manager.
Parameters
- cache_dir
-
Npm cache directory (npm_config_cache). Default '/tmp/cache/npm'
- node_version
-
NodeJS major version number, used in deb.nodesource.com URI. Default: '6'
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'puppet/modules/npm/manifests/init.pp', line 15
class npm (
$cache_dir = '/tmp/cache/npm',
$node_version = '6',
) {
apt::repository { 'nodesource':
uri => "https://deb.nodesource.com/node_${node_version}.x",
dist => $::lsbdistcodename,
components => 'main',
keyfile => 'puppet:///modules/npm/nodesource-pubkey.asc',
}
# Pin it higher than the Wikimedia repo
apt::pin { 'nodejs':
package => 'nodejs',
pin => 'release o=Node Source',
priority => 1010,
}
package { 'nodejs':
ensure => latest,
install_options => ['--allow-downgrades'],
require => [
Apt::Repository['nodesource'],
Apt::Pin['nodejs'],
],
}
exec { 'npm_set_cache_dir':
command => "/bin/mkdir -p ${cache_dir} && /bin/chmod -R 0777 ${cache_dir} && /bin/chown -R 1000:1000 ${cache_dir}",
unless => "/usr/bin/test -d ${cache_dir}",
user => 'root',
group => 'root',
}
# Node 6 brings in npm 3 that doesn't work in shared folders due to a bug.
# See: https://github.com/npm/npm/issues/9953
# Although the ticket is closed, the issue is still present, so downgrade
# to the latest npm 2
if $node_version == 6 {
exec { 'downgrade_npm':
command => '/usr/bin/npm install -g npm@latest-2',
user => 'root',
unless => '/usr/bin/npm --version | /bin/grep -qe ^2',
require => Package['nodejs'],
}
}
env::var { 'NPM_CONFIG_CACHE':
value => $cache_dir,
require => Exec['npm_set_cache_dir'],
}
}
|