为何每次重启DDEV后都需重新安装HubSpot CLI?
DDEV重启后HubSpot CLI丢失,需重复安装的问题分析与解决
问题场景
我在Windows系统通过WSL2运行DDEV开发自定义HubSpot主题,流程如下:
- 进入项目目录执行全局安装HS CLI:
ddev npm install -g @hubspot/cli - 执行监听命令正常工作:
ddev exec hs watch my-theme my-theme - 按CTRL+C退出CLI,执行
ddev stop关闭站点。 - 再次执行
ddev start后,运行监听命令报错:
只能重新执行bash: line 1: hs: command not found Failed to execute command hs watch my-theme my-theme: exit status 127ddev 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包目录挂载到宿主机,避免容器销毁后丢失:
- 在项目的
.ddev/config.yaml中添加挂载配置:volumes: - type: bind source: ./ddev-npm-global target: /usr/local/lib/node_modules - 本地创建对应目录:
mkdir -p .ddev/ddev-npm-global - 重启DDEV:
ddev restart - 再次全局安装HS CLI,之后重启容器也会保留该包。
内容的提问来源于stack exchange,提问作者Sandwich
相关产品推荐
相关产品推荐

