Ensures that everyone has npm up to date without running “npm install”
Ideally this should be wrapped as “npm check” command, but we use a ruby/rake based workflow anyway.
desc 'make sure npm is installed'
task :ensure_npm do
expected = JSON.parse(File.read('package-lock.json')).fetch('dependencies')
satisfied = expected.all? do |name, data|
expected_version = data.fetch('version')
pack = "node_modules/#{name}/package.json"
next unless File.exist?(pack)
resolved = JSON.parse(File.read(pack))
resolved.fetch('version') == expected_version || # regular
resolved.fetch('_resolved') == expected_version # git
end
sh "npm install" unless satisfied
end