如何在GitHub Action中指定Node.js项目的运行路径?
问题根因
GitHub Actions的每个run指令对应独立的shell进程,所有进程默认启动位置都是仓库的根工作目录。你单独执行的cd backend_app仅在对应步骤的进程内生效,后续执行npm相关命令时会自动回到根目录,自然找不到存放在子目录内的package.json文件。
可用解决方案
方案1:为npm步骤指定工作目录(最推荐)
直接在run步骤中添加working-directory参数显式指定执行路径,可读性和可维护性最高:
steps: - uses: actions/checkout@v3 with: path: backend_app - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: npm ci working-directory: backend_app - run: npm run build --if-present working-directory: backend_app - run: npm test working-directory: backend_app
方案2:合并所有命令到同一个run步骤
同一个shell进程内的目录切换会持续生效,用换行把所有命令放在同一个run块内即可:
- run: | cd backend_app npm ci npm run build --if-present npm test
方案3:使用npm原生参数指定执行目录
不需要切换目录,直接通过--prefix参数告知npm要操作的目录路径:
- run: npm ci --prefix backend_app - run: npm run build --if-present --prefix backend_app - run: npm test --prefix backend_app
内容的提问来源于stack exchange,提问作者Vico
相关产品推荐
相关产品推荐

