Как выполнить предварительную фиксацию для отдельных папок? - PullRequest
0 голосов
/ 03 августа 2020

Я использую pre-commit , и у меня есть репозиторий с двумя папками:

.
├── backend
│   └── (backend files)
├── frontend
│   └── (frontend files)
└── .pre-commit-config.yaml

Каждая папка имеет Dockerfile и не зависит от другой.

Это мой .pre-commit-config.yaml:

repos:
  - repo: local
    hooks:
      - id: go-docker
        name: go
        language: docker_image
        entry: backend:latest go fmt
        files: backend/

      - id: prettier-docker
        name: prettier
        language: docker_image
        entry: frontend:latest npm run format
        files: frontend/

Я хочу выполнить предварительную фиксацию для обеих папок с помощью Docker, но получаю:

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /src/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/src/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

Согласно документация перед фиксацией: pre-commit will automatically mount the repository source as a volume using -v $PWD:/src:rw,Z and set the working directory using --workdir /src.

Таким образом, проблема, похоже, в том, что папка frontend находится в src/frontend, но путь, который использует предварительная фиксация, равен src.

Я пробовал cd frontend перед командой Docker, но безуспешно. Есть идеи?

Заранее спасибо!

1 Ответ

1 голос
/ 03 августа 2020

вы правы, что вам нужно cd, но вам нужно сделать это внутри docker

, например:

      - id: prettier-docker
        name: prettier
        language: docker_image
        entry: frontend:latest bash -c 'cd frontend && npm run format'
        files: frontend/

, если я правильно помню вам также понадобится pass_filenames: false

...