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