【问题标题】:Using Husky with Docker when no Node.js is available in local当本地没有可用的 Node.js 时将 Husky 与 Docker 一起使用
【发布时间】:2020-07-15 19:37:11
【问题描述】:
使用 Docker,当容器中有 Node.js 而本地机器上没有 Node.js 时,我试图让 Husky 工作。
因为它将由 git 命令触发,来自here 的信息:“如果你在终端中运行 git 命令,husky 将使用你的 shell PATH 中定义的版本”,以及这个@987654322 @: "如果 ~/.huskyrc 文件存在,Husky 将在运行钩子脚本之前获取它。您可以使用它,例如,加载节点版本管理器或在钩子之前运行一些 shell 命令。"
是否可以更改PATH 使其指向容器中的Node.js 之类的解决方案?如果可以,怎么做?
提前致谢!
【问题讨论】:
标签:
node.js
docker
githooks
husky
git-husky
【解决方案1】:
如果我没听错的话,我分两步解决了这个问题:
- 通过与来宾共享主机的 git
# at docker-compose.yaml
version: '3'
services:
app:
build:
...
volumes:
- /usr/bin/git:/usr/bin/git
# installing dependencies missing at guest (in my case, guest debian, host ubuntu)
- /lib/x86_64-linux-gnu/libpcre2-8.so.0:/lib/x86_64-linux-gnu/libpcre2-8.so.0
和
2.通过在容器内运行hook命令,例如:
# at .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
# instead of only npx lint-staged
docker exec great-app npx lint-staged