lib/licensed/sources/yarn.rb in licensed-3.4.1 vs lib/licensed/sources/yarn.rb in licensed-3.4.2
- old
+ new
@@ -21,9 +21,28 @@
end
def yarn_version
Gem::Version.new(Licensed::Shell.execute("yarn", "-v"))
end
+
+ # Returns a hash that maps all dependency names to their location on disk
+ # by parsing every package.json file under node_modules.
+ def dependency_paths
+ @dependency_paths ||= [
+ *Dir.glob(config.pwd.join("**/node_modules/*/package.json")),
+ *Dir.glob(config.pwd.join("**/node_modules/@*/*/package.json"))
+ ].each_with_object({}) do |file, hsh|
+ begin
+ dirname = File.dirname(file)
+ json = JSON.parse(File.read(file))
+ hsh["#{json["name"]}@#{json["version"]}"] = dirname
+ rescue JSON::ParserError
+ # don't crash execution if there is a problem parsing a package.json file
+ # if the bad package.json file relates to a package that licensed should be reporting on
+ # then this will still result in an error about a missing package
+ end
+ end
+ end
end
end
end
require "licensed/sources/yarn/v1"