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
相关产品推荐
相关产品推荐

