在npm(或其他工具)中是否有选项可以打印所有使用过的许可证?我有一个项目,我想确保我不使用我无法使用的许可证库.
编辑:发现许多开发人员没有在package.json中包含许可证,所以我必须手动找到"npm docs package-name"
ian*_*lly 52
我有完全相同的要求,并写了一个节点模块来做到这一点.我知道无耻的自我推销,但它是开源的,希望它可以帮助你解决问题.如果您有任何问题或建议,请告诉我.
与其他答案的区别在于,它不仅使用package.json许可证声明,而且还在项目中的许可证和自述文件中查找潜在的许可证信息.
你可以使用安装 npm install -g nlf
And*_*ren 19
cd {project}/node_modules
ls | sed 's/$/\/package.json/' | xargs grep '"license[s]*"' -A 3
Run Code Online (Sandbox Code Playgroud)
可以使用一些改进,但它的工作原理(至少在osx上,应该在linux上工作,不知道windows).你应该看到类似的东西:
grunt/package.json: "licenses": [
grunt/package.json- {
grunt/package.json- "type": "MIT",
grunt/package.json- "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT"
--
grunt-contrib-concat/package.json: "licenses": [
grunt-contrib-concat/package.json- {
grunt-contrib-concat/package.json- "type": "MIT",
grunt-contrib-concat/package.json- "url": "https://github.com/gruntjs/grunt-contrib-concat/blob/master/LICENSE-MIT"
--
Run Code Online (Sandbox Code Playgroud)
更新:
如果你想看到所有模块的名称,甚至是那些嵌套在其他模块中的模块,下面的工作原理(@robertklep,稍微修改为在node_modules目录内部时仍然有效):
find * -name package.json | xargs grep '"license[s]*"' -A 3
Run Code Online (Sandbox Code Playgroud)
jst*_*aab 13
纱线也有这个命令.yarn licenses list
呈现短输出,yarn licenses generate-disclaimer
将所有实际许可文本呈现给标准输出(适用于免责声明,如选项所暗示的那样).
如果你想省略devDependencies
:
NODE_ENV=production yarn licenses list
Run Code Online (Sandbox Code Playgroud)为了我的目的,以下命令让我足够接近:
yarn licenses list | grep License | \
grep -vE 'MIT|ISC|WTFPL|BSD|Apache|Unlicense|CC-BY|Public Domain'`
Run Code Online (Sandbox Code Playgroud)刚刚为一个大型项目做了这个,我可以说这个过程比你想象的要充分自动化更令人头痛.使用此处列出的一些技巧很容易获得其中许多,但NPM包许可证不会一致地发布,并且可能出现
此外,您有时必须阅读许可证以告知它对应的哪个着名的开源许可证.
我知道这样做的最好的工具,(与其他一些答案不同)涵盖所有这些案例是licensecheck包:https: //github.com/marcello3d/node-licensecheck
它查看package.json以及常见许可证文件,并对已知许可证进行签名匹配,因此它可以自动准确识别更多许可证.它还根据标准SPDX许可证列表(https://spdx.org/licenses/)"标准化"许可证.
最后,Licensecheck还允许您保存在您自己的license.json文件中手动验证所需的任何剩余包(因为您不能指望外部维护者更改其包).
总之,这是一个非常强大的解决方案.
归档时间: |
|
查看次数: |
20605 次 |
最近记录: |