NestJS项目构建时如何验证依赖许可证?
NestJS 构建阶段添加依赖许可证检查方案
现成方案:直接集成 license-webpack-plugin
NestJS 默认基于 Webpack 构建,你提到的 license-webpack-plugin 可以直接集成,无需从零搭建配置,步骤如下:
安装依赖
npm install license-webpack-plugin --save-dev # 或 yarn add license-webpack-plugin -D # 或 pnpm add license-webpack-plugin -D配置 Webpack 插件
在项目根目录新建webpack.config.js,将插件注入现有构建流程:const LicenseWebpackPlugin = require('license-webpack-plugin').LicenseWebpackPlugin; module.exports = (options) => { options.plugins.push( new LicenseWebpackPlugin({ outputFilename: 'dist/licenses.txt', // 生成的许可证汇总文件路径 perChunkOutput: false, // 生成单一汇总文件,不按代码块拆分 // 自定义允许的许可证类型(按需调整) allow: (licenseType) => ['MIT', 'Apache-2.0', 'BSD-3-Clause'].includes(licenseType), // 自定义拒绝的许可证类型(按需调整) reject: (licenseType) => ['GPL-3.0'].includes(licenseType), }) ); return options; };让 NestJS 加载自定义配置
修改nest-cli.json,指定 Webpack 配置文件路径:{ "compilerOptions": { "webpackConfig": "./webpack.config.js" } }后续执行
nest build时,插件会自动扫描打包产物中的依赖,生成许可证报告;若检测到拒绝的许可证类型,会直接终止构建,确保合规。
替代方案:使用独立许可证检查工具
如果不想修改 Webpack 配置,也可以用 license-checker-cli 这类独立工具,在构建前完成全依赖扫描:
安装依赖
npm install license-checker --save-dev添加检查脚本
修改package.json的scripts字段,将检查步骤整合到构建流程:{ "scripts": { "check-licenses": "license-checker --json --out licenses.json", "build": "npm run check-licenses && nest build" } }执行
npm run build时,会先扫描项目所有依赖(含开发依赖)的许可证信息并生成 JSON 报告,可通过工具参数配置拦截规则,确保合规后再执行构建。
方案对比
license-webpack-plugin:仅检查最终打包到生产产物中的依赖,聚焦运行时合规性。license-checker-cli:覆盖项目所有依赖,适合全链路合规审计场景。
内容的提问来源于stack exchange,提问作者TomFree
相关产品推荐
相关产品推荐

