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

为何每次重启DDEV后都需重新安装HubSpot CLI?

DDEV重启后HubSpot CLI丢失,需重复安装的问题分析与解决

问题场景

我在Windows系统通过WSL2运行DDEV开发自定义HubSpot主题,流程如下:

  1. 进入项目目录执行全局安装HS CLI:
    ddev npm install -g @hubspot/cli
    
  2. 执行监听命令正常工作:
    ddev exec hs watch my-theme my-theme
    
  3. 按CTRL+C退出CLI,执行ddev stop关闭站点。
  4. 再次执行ddev start后,运行监听命令报错:
    bash: line 1: hs: command not found
    Failed to execute command hs watch my-theme my-theme: exit status 127
    
    只能重新执行ddev npm install -g @hubspot/cli才能恢复。

我的package.json内容:

{
  "dependencies": {
    "@hubspot/cli": "^4.1.7"
  }
}

原因

DDEV的容器是临时化的,全局安装(-g)的npm包会存在容器内部的文件系统里。执行ddev stop时容器会被销毁,下次ddev start会创建全新的容器,之前装的全局HS CLI自然就没了。另外,虽然package.json里声明了依赖,但你用的是全局安装方式,没用到项目本地的依赖文件。

解决办法

方法1:用项目本地的HS CLI(推荐)

不需要全局安装,直接利用项目已声明的依赖:

  • 先在项目目录执行:
    ddev npm install
    
  • 执行监听命令时,用npx调用本地CLI:
    ddev exec npx hs watch my-theme my-theme
    
  • 更省心的方式是在package.json里加npm脚本:
    {
      "scripts": {
        "watch": "hs watch my-theme my-theme"
      },
      "dependencies": {
        "@hubspot/cli": "^4.1.7"
      }
    }
    
    之后直接执行:
    ddev exec npm run watch
    

方法2:持久化全局npm包目录(不推荐)

通过DDEV配置把全局npm包目录挂载到宿主机,避免容器销毁后丢失:

  1. 在项目的.ddev/config.yaml中添加挂载配置:
    volumes:
      - type: bind
        source: ./ddev-npm-global
        target: /usr/local/lib/node_modules
    
  2. 本地创建对应目录:
    mkdir -p .ddev/ddev-npm-global
    
  3. 重启DDEV:
    ddev restart
    
  4. 再次全局安装HS CLI,之后重启容器也会保留该包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:47:29