7

使用 Docker,当容器中有 Node.js 而本地机器上没有 Node.js 时,我试图让 Husky 工作。

因为它会被 git 命令触发,这里的信息:“如果你在终端中运行 git 命令,husky 将使用你的 shell 中定义的版本PATH”,另一个~/.huskyrc:“如果存在,Husky 将源文件在运行钩子脚本之前。您可以使用它,例如,加载节点版本管理器或在钩子之前运行一些 shell 命令。

像改变PATH它指向容器中的 Node.js 这样的解决方案可以吗?如果可以,怎么做?

提前致谢!

4

1 回答 1

1

如果我理解正确,我分两步解决了这个问题:

  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 

于 2021-06-14T21:11:24.630 回答