lib/licensed/sources/yarn/berry.rb in licensed-3.4.0 vs lib/licensed/sources/yarn/berry.rb in licensed-3.4.1
- old
+ new
@@ -61,12 +61,18 @@
# 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")).each_with_object({}) do |file, hsh|
- dirname = File.dirname(file)
- json = JSON.parse(File.read(file))
- hsh["#{json["name"]}-#{json["version"]}"] = dirname
+ 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
# Returns the output from running `yarn list` to get project dependencies
def yarn_info_command