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

Flutter部署GitHub Pages遇大写仓库名不符合Dart包名的无更名解决问询

解决方案

你可以通过以下两种无需修改原仓库名称的配置方式规避Dart包名校验错误:

方案1:直接指定checkout步骤的检出路径(简单易维护)

actions/checkout原生支持path参数自定义代码检出的目录名称,你只需要把该参数值设置为原仓库名的全小写版本即可:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4 # 建议升级到官方最新版本,兼容性更好
        with:
          path: 'repowithuppercase' # 替换为你的仓库名的全小写格式
      - uses: subosito/flutter-action@v2
        with:
          channel: stable
      # 你原来引用的自定义action写法无需修改,GitHub对action仓库引用的大小写不敏感
      - uses: username/RepoWithUpperCase@main
      - run: flutter create .
        shell: bash
        working-directory: 'repowithuppercase' # 和上面path设置的全小写路径保持一致

方案2:动态自动转换目录名为全小写(适配性更强,无需硬编码目录名)

如果不想手动写死全小写路径,可以在checkout后增加一步重命名操作,自动将仓库目录转换为全小写:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 自动将仓库目录重命名为全小写
        run: |
          # 获取原仓库名称
          repo_name="${{ github.event.repository.name }}"
          # 转换为全小写
          lower_repo_name=$(echo "$repo_name" | tr '[:upper:]' '[:lower:]')
          # 重命名目录
          mv "$repo_name" "$lower_repo_name"
          # 写入全局环境变量,供后续步骤调用
          echo "WORKING_DIR=$lower_repo_name" >> $GITHUB_ENV
      - uses: subosito/flutter-action@v2
        with:
          channel: stable
      - uses: username/RepoWithUpperCase@main
      - run: flutter create .
        shell: bash
        working-directory: ${{ env.WORKING_DIR }}

原理说明:Dart官方规范要求包名只能包含小写字母、数字和下划线,flutter create .会默认将当前目录名作为包名进行校验,上述方案通过修改本地检出的目录名规避校验,完全不影响GitHub远端的仓库名称设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:03