【问题标题】:Combining all of the node_modules packages' LICENSE files into one file将所有 node_modules 包的 LICENSE 文件合并到一个文件中
【发布时间】:2021-03-20 03:24:29
【问题描述】:

在我的 node_modules 文件夹中,假设我有 5 个文件夹:

文件夹 1

文件夹2

文件夹 3

文件夹 4

文件夹 5

每个文件夹都包含一个“LICENSE”文件或“LICENSE.md”文件。我想运行某种脚本,无论是 Python 还是 JS,它将每个 LICENSE 文件的内容以及包的名称添加到一个文件“Destination.txt”中。有没有更简单的方法来做到这一点?我知道 NPM 许可证检查器允许我列出许可证,然后我可以将结果输出到文本文件中,但我也希望将每个 LICENSE 文件的内容查看到单个文件中。

所以 Destination.txt 的示例输出应该是这样的:

文件夹 1

许可证文件中的文本

文件夹2

许可证文件中的文本

文件夹 3

许可证文件中的文本

文件夹 4

许可证文件中的文本

文件夹 5

许可证文件中的文本

我正在考虑的可能是一个 Python 脚本,它遍历 node_modules 中的每个文件夹并尝试找到一个 LICENSE 文件。当它进入一个文件夹并找到一个 LICENSE 时,它会将内容复制/粘贴到 Destination.txt 中,然后移动到下一个 LICENSE 文件。我不知道如何实现这一点,并会感谢任何提示。不一定是 Python。我使用的是 Windows 计算机,所以如果有一种创造性的方式可以使用 CLI 命令生成我正在寻找的内容,那就太好了。

TLDR;我想在一个文件中列出我的包的名称以及它们相关的 LICENSE 文件的内容。因此,如果列出了 package1,则 package1 LICENSE 文件的内容将列在其下方。与 package2 等相同。

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    大多数语言都有一个已经做到这一点的包。例如

    nodejs:

    蟒蛇:

    红宝石:

    每个都可以生成一个 json 文件,然后您可以根据需要对其进行解析和组合。

    如果你对 npm 包特别感兴趣,那么就使用 npm view 像这样

    $ npm view eslint --json license
    "MIT"
    

    如果你想要它到你所有的 npm 包中,那么你可以像这样将它与npm ls 结合起来

    for PKG in $(npm ls --json | jq -r '.dependencies | keys | .[]')
    do
      npm view $PKG name license --json
    done
    

    【讨论】:

    • 我不知道合法性,但我发现它比许可证检查器更有用。但是,我仍然对如何显示实际的许可证文本感到困惑。我想要的是一个包含我的包名称列表的destination.txt 文件,然后在每个包下面我希望有来自相关许可文件的文本被包含在内。我不只是想要一个包列表。
    • 我认为我的回答涵盖了它:)
    • 我很困惑。我相信您的回答给了我包名称和许可证类型(例如“MIT”)。那不是我要找的。我正在寻找包名称和完整的许可证文本,即段落。如果我遗漏了什么,请告诉我。
    【解决方案2】:

    我能找到的不需要自定义脚本的最接近的东西是Yarn Licenses

    我使用了命令yarn licenses generate-disclaimer > output.txt

    即使我以前从未通过 Yarn 安装过任何东西,它也能正常工作。只有 NPM。

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多