{"id":23078004,"url":"https://github.com/volumegraphics/license-info-printer","last_synced_at":"2026-02-12T10:33:02.682Z","repository":{"id":96344812,"uuid":"137770975","full_name":"VolumeGraphics/license-info-printer","owner":"VolumeGraphics","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-10T11:42:56.000Z","size":852,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-08T23:56:36.319Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VolumeGraphics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-18T15:34:23.000Z","updated_at":"2024-12-10T11:43:00.000Z","dependencies_parsed_at":"2024-12-25T10:01:18.462Z","dependency_job_id":null,"html_url":"https://github.com/VolumeGraphics/license-info-printer","commit_stats":{"total_commits":69,"total_committers":6,"mean_commits":11.5,"dds":"0.42028985507246375","last_synced_commit":"4befcbd30bdb81bbd603d5cf5997dea5ba88a773"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VolumeGraphics/license-info-printer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolumeGraphics%2Flicense-info-printer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolumeGraphics%2Flicense-info-printer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolumeGraphics%2Flicense-info-printer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolumeGraphics%2Flicense-info-printer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VolumeGraphics","download_url":"https://codeload.github.com/VolumeGraphics/license-info-printer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolumeGraphics%2Flicense-info-printer/sbom","scorecard":{"id":148964,"data":{"date":"2025-08-11","repo":{"name":"github.com/VolumeGraphics/license-info-printer","commit":"caa9940f8cf21b39a57a57aa38f4d443baa6a2d1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/22 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T10:05:39.832Z","repository_id":96344812,"created_at":"2025-08-16T10:05:39.832Z","updated_at":"2025-08-16T10:05:39.832Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271748786,"owners_count":24814051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-16T10:46:07.080Z","updated_at":"2026-02-12T10:33:02.674Z","avatar_url":"https://github.com/VolumeGraphics.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# @volumegraphics/license-info-printer\nCollects license information of all third-party dependencies of your module and prints it to a nice html document.\n# Install\n`npm install --save \"@volumegraphics/license-info-printer\"`\n# Example\nAn example can be found here: [@volumegraphics/license-info-printer-example](https://www.npmjs.com/package/@volumegraphics/license-info-printer-example)\n# Command Line Interface\nYou can run the `license-info-printer` command from the `node_modules/.bin` directory.\nThe CLI can be integrated into your product build chain. The process will return an error code and error message if it fails and interrupt your build process.\n\nThe following arguments are available to the license-info-printer CLI:\n\n## Arguments ##\n\n|Argument|Required|Description|\n|:-------|:-------|:----------|\n|productPackageJsonFile | X | File path to your package.json file of your product. The `dependencies`, `devDependencies` and `optionalDependencies` fields in your `package.json` are all considered to be valid dependencies of your product |\n|productNodeModulesPaths | X | Directory paths to all `node_modules` folder that your product depends on. Separate multiple folder paths with `;` |\n|downloadCmd|| A commandline that will be executed before license generation to download files for license generation. The placeholder \\\u003cdownloadDir\\\u003e defines the directory where the command should download its files|\n|licenseFilesPath | X | Directory folder path containing all your license files. The path can be prefixed with \\\u003cdownload\\\u003e to access downloaded files (see downloadCmd option). |\n|configFilePath | X | File path location of the config file. It is used to validate licenses, complete missing license information or overwrite incorrect license information of some modules. See **config.json Structure** section. The path can be prefixed with \\\u003cdownload\\\u003e to access downloaded files (see downloadCmd option). |\n|handlebarsTemplate | X | A document template file based on \"handlebars\" template engine that is used to print your license file. See **Document template** section. The path can be prefixed with \\\u003cdownload\\\u003e to access downloaded files (see downloadCmd option). |\n|documentFile | X | File path location to the generated html document. |\n|errorLogFile |   | File path location to the error log file. |\n|disableNpmVersionCheck |    | By default, the license printer insits on a correct npm license string (see spdx for more information). If it is incorrect, it will give you an error. If you set the \"disableNpmVersionCheck\" flag, it will not do this. |\n|licenseTextModifier|| Modify the license content before applying it to the template. Valid options are \"None\" and \"JsonString\". \"JsonString\" will encode double quotes.\n|errorLevelRedundantHomepageOverrides |   | Allowed values are \"error\" and \"suppress\". Default is \"error\". if \"error\" is set, the license printer will give you an error if you have put a hompage override for a license in your config.json but this license is not used by your product. If you set it to \"suppress\", nothing will happen. |\n|errorLevelRedundantLicenseOverrides |   | Allowed values are \"error\" and \"suppress\". Default is \"error\". if \"error\" is set, the license printer will give you an error if you have put a license override in your config.json but this license is not used by your product. If you set it to \"suppress\", nothing will happen. |\n\nConsole printings will notify you if an error occured.\n# Use as library\nInstead of using the Command Line Interface, you can invoke the license-info-printer from your code.\nExample:\n```jsx\nimport * as lip from \"@volumegraphics/license-info-printer\";\n\n... // set toDocument arguments here. See CLI section for arguments.\n\nconst doc = await lip.toDocument(\n  productPackageJsonFile,\n  productNodeModulesPaths, // array type\n  licenseFilesPath,\n  configFilePath,\n  handlebarsTemplate,\n  disableNpmVersionCheck,\n  licenseTextModifier,\n  {\n    redundantHomepageOverrides,\n    redundantLicenseOverrides\n  }\n);\n\t\nif (doc.type === \"Error\") {\n  for(let m of errorObj.message) {\n    console.log(m);\n  }\n  return;\n}\n\nconsole.log(doc.document);\n\n```\n# config.json Structure\nYou can use the `config.json` from the [Example](https://www.npmjs.com/package/@volumegraphics/license-info-printer-example) as template.\n```js\n{\n  \"licenses\" : [ // set of allowed licenses\n    {\n      \"name\": \"\u003cName of a valid NPM license\u003e\",\n      \"file\": \"\u003cPath to license file\u003e\"\n    }\n  ],\n  \"overrides\" : { // overrides invalid licenses information of third-party modules\n    \"homepage\" : [ // if \"homepage\" or \"author\" is not set, you need to overwrite it here.\n      {\n        \"name\": \"\u003cExact Name of library\u003e\",\n        \"version\": \"\u003cVersion string\u003e\",\n        \"new\" : \"\u003cActual hompage / author\u003e\"\n      }\n    ],\n    \"license\" : [ // if \"license\" is incorrect, you need to overwrite it here\n      {\n        \"name\": \"\u003cName of the library\u003e\",\n        \"version\": \"\u003cVersion string\u003e\",\n        \"new\": \"\u003cValid new license\u003e\",\n        \"comment\": \"\u003cfyi\u003e\"\n      }\n    ]\n  }\n}\n```\n# Document template\nThe documents Template uses the template engine \"handlebars\". See https://handlebarsjs.com/ on how to configure it.\nData layout for the handlebars template:\n```js\n{\n  licenses: [\n  {\n    index: \"\u003cArray index of license\u003e\",\n    name: \"\u003cName of license\u003e\",\n    licenseText: \"\u003cThe license text\u003e\",\n      libraries: [\n        name: \"\u003cLibrary name\u003e\",\n        version: \"\u003cLibrary version\u003e\",\n        copyright: \"\u003cCopyright holder of the library\u003e\"\n      ]\n    }\n  ]\n}\n```\nYou can use the `template.html` file from the [Example](https://www.npmjs.com/package/@volumegraphics/license-info-printer-example) as template.\n# More control required\nIf you want to have more control over your license evaluations, have a look at\n[@volumegraphics/license-info-collector](https://www.npmjs.com/package/@volumegraphics/license-info-collector)\nThe license-info-printer uses this library under the hood.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolumegraphics%2Flicense-info-printer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolumegraphics%2Flicense-info-printer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolumegraphics%2Flicense-info-printer/lists"}