如何获取Angular-CLI打包的第三方软件及间接依赖列表?
我来给你几个实用的方案,帮你搞定Angular-CLI打包后所有第三方依赖(包括间接依赖)的许可证列表问题:
方案1:用
license-checker工具(最直接全面) 这个工具就是专门用来扫描项目所有依赖(含间接依赖)的许可证信息的,上手超简单:
- 先安装:可以全局安装方便后续使用
npm install -g license-checker,或者作为项目开发依赖安装npm install license-checker --save-dev - 执行命令生成结果:
生成的文件里会包含每个包的名称、版本、许可证类型、包的本地路径,甚至许可证原文内容,完全覆盖你要的所有间接依赖需求。# 导出生产环境所有依赖(含间接)的许可证信息为JSON格式 license-checker --production --json > third-party-licenses.json # 或者导出为更易读的CSV格式 license-checker --production --csv > third-party-licenses.csv
方案2:调整
license-webpack-plugin配置(适配你现有工具) 你已经在用这个插件了,大概率是默认配置没开启扫描所有间接依赖,修改配置就能解决:
- 先确保你的Angular项目支持自定义webpack配置(Angular 6+可以通过
@angular-builders/custom-webpack实现,先装这个依赖:npm install @angular-builders/custom-webpack --save-dev) - 在项目根目录创建自定义webpack配置文件(比如
webpack.config.js),修改插件配置:const LicenseWebpackPlugin = require('license-webpack-plugin').LicenseWebpackPlugin; module.exports = { plugins: [ new LicenseWebpackPlugin({ // 关键:开启扫描所有依赖(包括间接依赖) scanAllDependencies: true, // 指定输出的文件名 outputFilename: '3rdPartyLicense-full.txt', // 可选:配置要排除的包(比如你不想包含webpack本身) // exclude: ['webpack'], // 强制包含每个包的许可证文本内容 includeLicenseFile: true }) ] }; - 修改
angular.json里的构建配置,指定使用这个自定义webpack文件,然后重新运行ng build --prod,生成的3rdPartyLicense-full.txt就会包含所有间接依赖的许可证信息了。
方案3:结合npm/yarn依赖列表+许可证工具
如果你只想先拿到所有依赖的完整列表(含间接),可以用npm或yarn自带的命令:
# npm 导出生产依赖的树状结构为JSON npm ls --production --json > dependencies-tree.json # yarn 版本命令 yarn list --production --json > dependencies-tree.json
拿到这个依赖树之后,你可以配合license-checker批量获取许可证信息,或者自己写简单脚本解析成你需要的格式。
个人最推荐方案1,不需要改动项目的构建配置,直接就能拿到所有你要的信息,省心又高效。
内容的提问来源于stack exchange,提问作者Puneri
相关产品推荐
相关产品推荐

