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

npm ci --include=dev未安装devDependencies致rollup找不到报错

问题根因

sh: 1: rollup: not found报错不是devDependencies配置错误导致的,核心原因是GitLab CI的job运行机制限制:
GitLab CI的每个job都运行在独立隔离的容器实例中,不同job的文件系统默认完全不共享。当前配置将依赖安装拆分为.pre阶段的独立npm_install job,该job中执行npm ci安装的node_modules仅存在于自身的临时容器内,后续build阶段的compile_app job运行在全新的容器环境中,无法读取之前安装的依赖,自然找不到本地安装的rollup命令。
此外现有缓存配置仅缓存了npm下载缓存目录.npm/,未将node_modules纳入缓存范围,也无法通过缓存将已安装的依赖传递给后续job。

修复方案
  • 首选方案(稳定性最佳):不要把依赖安装拆分为独立job,直接在需要依赖的job内执行安装步骤。修改compile_app job配置如下:
    compile_app:
      stage: build
      script:
        - npm ci --include=dev --cache .npm --prefer-offline
        - npm run build
    
    后续其他需要依赖npm包的job,也按相同逻辑在脚本开头执行依赖安装即可。
  • 可选方案(不推荐,易出现兼容问题):如果必须拆分独立的安装job,可以将node_modules加入缓存路径,让后续job从缓存读取已安装的依赖,需修改cache配置段:
    cache:
      key:
        files:
          - package-lock.json
      paths:
        - .npm/
        - node_modules/
    
    注意这种方案存在兼容风险,如果CI基础镜像的Node版本、系统架构发生变化,缓存的二进制依赖可能直接运行失败。
  • 配置优化建议:当前使用node:latest作为基础镜像,版本滚动更新可能触发不可预期的构建故障,建议替换为和本地开发环境一致的固定大版本镜像,例如node:18、node:20。

内容的提问来源于stack exchange,提问作者studio-pj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:27:25