Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用
Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用
Dart License Checker
这是一个脚本,用于在 GitHub Actions 中以纯文本形式展示依赖项的许可证。
barbecue | Apache 2.0
pana | BSD
path | BSD
pubspec_parse | BSD
安装并本地运行
首先,你需要全局安装 license_checker_for_github_action
插件:
flutter pub global activate license_checker_for_github_action
确保你处于你的 Flutter 应用或 Dart 程序的主目录下,然后执行:
dart_license_checker
如果这不起作用,你可能需要设置你的 PATH(参见 这里)。
GitHub Action
以下是在 GitHub Actions 中使用的示例配置:
- name: 检查许可证安装
run: |
dart pub global activate license_checker_for_github_action
- name: 检查许可证
run: |
dart_license_checker
显示传递依赖项
默认情况下,dart_license_checker
只显示直接依赖项(即你在 pubspec.yaml
文件中列出的包)。
如果你想要分析传递依赖项,可以使用 --show-transitive-dependencies
参数:
dart_license_checker --show-transitive-dependencies
如果你想只输出包含 Copyleft 许可的依赖项,可以使用 --only-copyleft
参数:
dart_license_checker --only-copyleft
如果你想在存在 Copyleft 许可的情况下触发错误(例如在 GitHub Actions 中),可以添加 --fail-on-copyleft
参数:
dart_license_checker --fail-on-copyleft
在结合 --only-copyleft
或 --fail-on-copyleft
参数时,你可能希望忽略某些库。为此,可以使用 --ignores
参数:
dart_license_checker --fail-on-copyleft --ignores 'nm, lib2'
示例代码
以下是一个命令行示例:
/// 命令行示例
void main() async {
//% `dart_license_checker --fail-on-copyleft --ignores 'nm, lib2'`
}
更多关于Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用license_checker_for_github_action
插件进行许可证检查的详细步骤,包括相关的代码案例。
1. 安装插件
首先,确保你已经在Flutter项目的根目录下。在你的pubspec.yaml
文件中添加license_checker
依赖(注意:license_checker_for_github_action
本身并不是一个Flutter插件,而是一个GitHub Action。但我们需要一个Flutter插件来生成许可证报告,通常使用license_checker
):
dependencies:
flutter:
sdk: flutter
license_checker: ^x.y.z # 请替换为最新版本号
然后运行以下命令来安装依赖:
flutter pub get
2. 生成许可证报告
在你的Flutter项目中创建一个脚本来生成许可证报告。通常,你会在项目根目录下创建一个名为generate_licenses.dart
的Dart脚本文件。
generate_licenses.dart
文件内容:
import 'package:license_checker/license_checker.dart';
import 'dart:io';
void main() async {
// 配置许可证输出路径
final outputPath = File('licenses.md');
// 获取依赖项的许可证信息
final licenses = await LicenseChecker.checkLicenses(
pubspecPath: './pubspec.yaml',
withTransitiveDependencies: true,
excludeLicenses: ['notice', 'unlicense'], // 可选:排除某些许可证
);
// 将许可证信息写入文件
await outputPath.writeAsString(licenses.toMarkdown());
print('Licenses have been written to ${outputPath.path}');
}
运行这个脚本:
dart generate_licenses.dart
运行后,你将在项目根目录下看到一个名为licenses.md
的文件,其中包含了所有依赖项的许可证信息。
3. 配置GitHub Actions
接下来,配置GitHub Actions来自动运行许可证检查。在你的GitHub仓库中,创建或编辑.github/workflows/license-check.yml
文件。
.github/workflows/license-check.yml
文件内容:
name: License Check
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
check-licenses:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Flutter
uses: subosito/flutter-action@v1
with:
flutter-version: 'stable' # 或者你需要的任何版本
- name: Install dependencies
run: flutter pub get
- name: Generate licenses
run: dart ./generate_licenses.dart
- name: Check for changes in licenses
id: check-licenses-change
run: |
if [ -n "$(git status --porcelain | grep 'licenses.md')" ]; then
echo "Licenses have changed, please review."
echo "::set-output name=has_changes::true"
else
echo "No changes in licenses."
echo "::set-output name=has_changes::false"
fi
- name: Fail if licenses have changed
if: ${{ steps.check-licenses-change.outputs.has_changes == 'true' }}
run: |
echo "Build failed because licenses have changed."
exit 1
这个GitHub Action的工作流程会在每次推送到main
分支或创建指向main
分支的拉取请求时运行。它会检查许可证文件是否发生变化,并在许可证发生变化时使构建失败。
通过以上步骤,你已经成功配置了Flutter项目使用license_checker
插件生成许可证报告,并集成GitHub Actions来自动检查许可证变化。