prettier-vscode icon indicating copy to clipboard operation
prettier-vscode copied to clipboard

Custom Prettier Resolution v2

Open jamesarosen opened this issue 2 years ago • 0 comments
trafficstars

Is your feature request related to a problem? Please describe. In #232, prettier-vscode added support for a prettier.prettierPath configuration. This works great for things like monorepos where the node_modules/ directory (and thus the Prettier binary) might lie outside the current workspace.

This does not, however, solve the problem for Docker-centric workspaces. We use Docker extensively in development so developers have an easier time getting a standardized development environment running. Local files (e.g. ./app/, ./src/, etc.) are mounted into a running Docker container via docker-compose. This container has all the development dependencies needed, including specific versions of Unix, node, Ruby, etc.

Everything is configured so that this works from the command line:

$ docker compose exec app node_modules/.bin/prettier './**/*' --ignore-unknown

I tried to set prettier.prettierPath: "docker compose exec app node_modules/.bin/prettier", but that failed.

Describe the solution you'd like I'd like to be able to specify an arbitrary executable (here docker) with arguments (here compose exec app node_modules/.bin/prettier") for VSCode-Prettier to run.

Describe alternatives you've considered I've successfully used emeraldwalk.runonsave to solve this, but it doesn't have the Prettier-specific niceties.

Additional context Possible downsides:

  • Use with Docker requires passing workspace-relative paths to the executable.
  • Use with Docker requires mounting files. That is outside the scope of Prettier-VSCode. If Docker containers have particularly complex configurations, project maintainers may have to write a wrapper around Prettier to munge paths or arguments.

Alternative solution: use a Visual Studio Code Dev Container to develop inside the Docker container, then run prettier-vscode normally.

jamesarosen avatar Dec 12 '22 19:12 jamesarosen