## 问题背景 在使用GitHub Actions部署多项目仓库时,经常会遇到这样的错误: ``` Error: Dependencies lock file is not found in /home/runner/work/project/project. Supported file patterns: package-lock.json,npm-shrinkwrap.json,yarn.lock ``` 这是因为GitHub Actions的`actions/setup-node`默认只在仓库根目录查找依赖锁定文件,而在多项目结构中,每个子项目都有自己的package-lock.json。 ## 解决方案 解决方法是为每个子项目正确配置`cache-dependency-path`参数,指向对应的package-lock.json文件。 ```yaml - name: 设置项目Node.js缓存 uses: actions/setup-node@v3 with: node-version: '20' cache: 'npm' cache-dependency-path: './subdir/package-lock.json' ``` ## 完整示例 以下是针对多项目仓库的配置示例: ```yaml # 处理项目A - name: 检查是否需要部署项目A id: check_project_a run: | COMMIT_MSG=$(git log -1 --pretty=%B) if [[ "$COMMIT_MSG" == *"projectA"* ]]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT else echo "DEPLOY=false" >> $GITHUB_OUTPUT fi - name: 设置项目A的Node.js缓存 if: steps.check_project_a.outputs.DEPLOY == 'true' uses: actions/setup-node@v3 with: node-version: '20' cache: 'npm' cache-dependency-path: './projectA/package-lock.json' - name: 安装项目A依赖 if: steps.check_project_a.outputs.DEPLOY == 'true' working-directory: ./projectA run: npm ci ``` ## 小结 通过正确配置`cache-dependency-path`参数,可以: 1. 为每个子项目单独设置依赖缓存 2. 加速构建流程,减少依赖安装时间 3. 提高CI/CD流程的稳定性 在多项目仓库中,应该为每个需要构建的子项目单独配置Node.js环境和缓存路径,而不是使用全局缓存设置。 Loading... ## 问题背景 在使用GitHub Actions部署多项目仓库时,经常会遇到这样的错误: ``` Error: Dependencies lock file is not found in /home/runner/work/project/project. Supported file patterns: package-lock.json,npm-shrinkwrap.json,yarn.lock ``` 这是因为GitHub Actions的`actions/setup-node`默认只在仓库根目录查找依赖锁定文件,而在多项目结构中,每个子项目都有自己的package-lock.json。 ## 解决方案 解决方法是为每个子项目正确配置`cache-dependency-path`参数,指向对应的package-lock.json文件。 ```yaml - name: 设置项目Node.js缓存 uses: actions/setup-node@v3 with: node-version: '20' cache: 'npm' cache-dependency-path: './subdir/package-lock.json' ``` ## 完整示例 以下是针对多项目仓库的配置示例: ```yaml # 处理项目A - name: 检查是否需要部署项目A id: check_project_a run: | COMMIT_MSG=$(git log -1 --pretty=%B) if [[ "$COMMIT_MSG" == *"projectA"* ]]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT else echo "DEPLOY=false" >> $GITHUB_OUTPUT fi - name: 设置项目A的Node.js缓存 if: steps.check_project_a.outputs.DEPLOY == 'true' uses: actions/setup-node@v3 with: node-version: '20' cache: 'npm' cache-dependency-path: './projectA/package-lock.json' - name: 安装项目A依赖 if: steps.check_project_a.outputs.DEPLOY == 'true' working-directory: ./projectA run: npm ci ``` ## 小结 通过正确配置`cache-dependency-path`参数,可以: 1. 为每个子项目单独设置依赖缓存 2. 加速构建流程,减少依赖安装时间 3. 提高CI/CD流程的稳定性 在多项目仓库中,应该为每个需要构建的子项目单独配置Node.js环境和缓存路径,而不是使用全局缓存设置。 最后修改:2026 年 05 月 26 日 © 允许规范转载 打赏 赞赏作者 赞 7 如果觉得我的文章对你有用,请随意赞赏