You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS项目构建时如何验证依赖许可证?

NestJS 构建阶段添加依赖许可证检查方案

现成方案:直接集成 license-webpack-plugin

NestJS 默认基于 Webpack 构建,你提到的 license-webpack-plugin 可以直接集成,无需从零搭建配置,步骤如下:

  1. 安装依赖

    npm install license-webpack-plugin --save-dev
    # 或 yarn add license-webpack-plugin -D
    # 或 pnpm add license-webpack-plugin -D
    
  2. 配置 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;
    };
    
  3. 让 NestJS 加载自定义配置
    修改 nest-cli.json,指定 Webpack 配置文件路径:

    {
      "compilerOptions": {
        "webpackConfig": "./webpack.config.js"
      }
    }
    

    后续执行 nest build 时,插件会自动扫描打包产物中的依赖,生成许可证报告;若检测到拒绝的许可证类型,会直接终止构建,确保合规。

替代方案:使用独立许可证检查工具

如果不想修改 Webpack 配置,也可以用 license-checker-cli 这类独立工具,在构建前完成全依赖扫描:

  1. 安装依赖

    npm install license-checker --save-dev
    
  2. 添加检查脚本
    修改 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:40:27