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

如何在Angular CLI项目构建中添加自定义许可证适配xRay扫描

问题:Angular项目自定义许可证如何纳入构建产物?

我们的项目在package.json的license属性中定义了自定义许可证。执行ng build构建项目后,dist文件夹中会生成包含所有依赖许可证的3rdpartylicenses.txt,但自定义许可证并未包含其中。已知Xray会扫描构建包中的package.json,或对照许可证数据库检查license.txt文件。请问如何将自定义许可证纳入构建产物?

更新:关于npm publish打包方案的可行性

经过调研后发现一种方案:使用npm publish将dist文件夹打包为tar包,此时package.json、license.txt甚至README.md都会被包含在包内。但当前Docker部署使用的是根目录含生成内容的应用包,修改方案需调整部署脚本,请问该方案是否可行?


方案分析与可行性评估

方案一:构建后复制许可证文件到dist目录

这是无需修改部署逻辑的最简方案:

  • 在package.json的scripts中添加postbuild命令,自动将项目根目录的LICENSE文件复制到dist文件夹
    • Linux/macOS示例:"postbuild": "cp LICENSE dist/"
    • Windows示例:"postbuild": "copy LICENSE dist\\"
  • 此方式完全保留原有Docker部署流程,Xray扫描dist目录时可直接识别到LICENSE文件

方案二:npm打包方案的可行性

该方案完全可行,但需注意以下细节:

  1. 替代命令优化:无需真的发布到npm仓库,用npm pack命令即可生成包含package.json、LICENSE、README.md和指定文件的tar包,更适配内部构建场景
  2. 部署脚本调整:需要修改Dockerfile或部署脚本,适配从tar包读取/解压内容的逻辑,调整成本取决于现有脚本复杂度
  3. 内容配置:确保package.json的files字段包含dist目录下的所有必要构建产物,npm会自动包含根目录的LICENSE等标准文件
  4. Xray兼容性:生成的tar包完全符合Xray的扫描规则,可正确识别自定义许可证

推荐选择

  • 若希望最小化改动,优先选方案一,通过postbuild脚本复制许可证,零部署流程调整
  • 若项目需要统一构建产物格式或有npm包管理需求,可选择方案二,用npm pack生成标准tar包后适配部署脚本

内容的提问来源于stack exchange,提问作者Eric Reboisson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:25:29