From a9e21f7f6b26e4ad27718a35efb53d7cda490e69 Mon Sep 17 00:00:00 2001 From: dmitry-bychkov Date: Fri, 11 Jul 2025 20:05:15 +0300 Subject: [PATCH] Update CONTRIBUTING.md with instructions to format markdown files (#14246) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Current documentation requires contributors to have Node.js/npm installed locally to format Markdown files. This might be problematic for users who don't work with JavaScript ecosystem or users who want to avoid toolchain setup. This change adds docker-based alternative: ``` docker run --rm -v .:/src/ -w /src/ node:alpine npx prettier --prose-wrap always --write "**/*.md" ``` Which mounts current working directory into /src/ inside of a container and also sets working directory (-w) to /src/ so prettier loads .editorconfig. ## Test Plan Both commands should produce the same output
Native Prettier ```console ➜ uv git:(docs/contributing-md-formatting) npx prettier --prose-wrap always --write "**/*.md" .github/PULL_REQUEST_TEMPLATE.md 28ms (unchanged) BENCHMARKS.md 30ms (unchanged) changelogs/0.1.x.md 264ms (unchanged) changelogs/0.2.x.md 223ms (unchanged) changelogs/0.3.x.md 29ms (unchanged) changelogs/0.4.x.md 126ms (unchanged) changelogs/0.5.x.md 153ms (unchanged) changelogs/0.6.x.md 77ms (unchanged) CONTRIBUTING.md 9ms (unchanged) crates/README.md 4ms (unchanged) crates/uv-build/README.md 1ms (unchanged) crates/uv-client/README.md 1ms (unchanged) crates/uv-globfilter/README.md 3ms (unchanged) crates/uv-pep440/Readme.md 6ms (unchanged) crates/uv-pep508/Readme.md 3ms (unchanged) crates/uv-python/python/packaging/README.md 1ms (unchanged) crates/uv-trampoline/README.md 14ms (unchanged) crates/uv-virtualenv/README.md 1ms (unchanged) docs/concepts/authentication.md 10ms (unchanged) docs/concepts/build-backend.md 11ms (unchanged) docs/concepts/cache.md 17ms (unchanged) docs/concepts/configuration-files.md 9ms (unchanged) docs/concepts/index.md 2ms (unchanged) docs/concepts/indexes.md 22ms (unchanged) docs/concepts/projects/build.md 4ms (unchanged) docs/concepts/projects/config.md 25ms (unchanged) docs/concepts/projects/dependencies.md 29ms (unchanged) docs/concepts/projects/index.md 2ms (unchanged) docs/concepts/projects/init.md 10ms (unchanged) docs/concepts/projects/layout.md 10ms (unchanged) docs/concepts/projects/run.md 4ms (unchanged) docs/concepts/projects/sync.md 11ms (unchanged) docs/concepts/projects/workspaces.md 12ms (unchanged) docs/concepts/python-versions.md 26ms (unchanged) docs/concepts/resolution.md 40ms (unchanged) docs/concepts/tools.md 19ms (unchanged) docs/getting-started/features.md 8ms (unchanged) docs/getting-started/first-steps.md 2ms (unchanged) docs/getting-started/help.md 8ms (unchanged) docs/getting-started/index.md 2ms (unchanged) docs/getting-started/installation.md 8ms (unchanged) docs/guides/index.md 2ms (unchanged) docs/guides/install-python.md 31ms (unchanged) docs/guides/integration/alternative-indexes.md 21ms (unchanged) docs/guides/integration/aws-lambda.md 49ms (unchanged) docs/guides/integration/dependency-bots.md 16ms (unchanged) docs/guides/integration/docker.md 37ms (unchanged) docs/guides/integration/fastapi.md 8ms (unchanged) docs/guides/integration/github.md 36ms (unchanged) docs/guides/integration/index.md 4ms (unchanged) docs/guides/integration/jupyter.md 17ms (unchanged) docs/guides/integration/marimo.md 11ms (unchanged) docs/guides/integration/pre-commit.md 27ms (unchanged) docs/guides/integration/pytorch.md 12ms (unchanged) docs/guides/package.md 5ms (unchanged) docs/guides/projects.md 12ms (unchanged) docs/guides/scripts.md 19ms (unchanged) docs/guides/tools.md 8ms (unchanged) docs/index.md 7ms (unchanged) docs/pip/compatibility.md 44ms (unchanged) docs/pip/compile.md 13ms (unchanged) docs/pip/dependencies.md 3ms (unchanged) docs/pip/environments.md 10ms (unchanged) docs/pip/index.md 2ms (unchanged) docs/pip/inspection.md 1ms (unchanged) docs/pip/packages.md 3ms (unchanged) docs/reference/benchmarks.md 3ms (unchanged) docs/reference/index.md 3ms (unchanged) docs/reference/installer.md 2ms (unchanged) docs/reference/policies/index.md 2ms (unchanged) docs/reference/policies/license.md 2ms (unchanged) docs/reference/policies/platforms.md 4ms (unchanged) docs/reference/policies/versioning.md 2ms (unchanged) docs/reference/resolver-internals.md 19ms (unchanged) docs/reference/troubleshooting/build-failures.md 13ms (unchanged) docs/reference/troubleshooting/index.md 1ms (unchanged) docs/reference/troubleshooting/reproducible-examples.md 7ms (unchanged) PIP_COMPATIBILITY.md 1ms (unchanged) README.md 10ms (unchanged) scripts/benchmark/README.md 1ms (unchanged) scripts/packages/built-by-uv/README.md 1ms (unchanged) scripts/packages/dependent_locals/first_local/README.md 0ms (unchanged) scripts/packages/dependent_locals/second_local/README.md 0ms (unchanged) scripts/packages/hatchling_editable/README.md 0ms (unchanged) scripts/packages/README.md 1ms (unchanged) scripts/packages/root_editable/README.md 0ms (unchanged) scripts/workspaces/albatross-virtual-workspace/packages/Unrelated.md 1ms (unchanged) SECURITY.md 2ms (unchanged) STYLE.md 9ms (unchanged) ➜ uv git:(docs/contributing-md-formatting) git status On branch docs/contributing-md-formatting nothing to commit, working tree clean ➜ uv git:(docs/contributing-md-formatting) ```
Docker based ```console ➜ uv git:(docs/contributing-md-formatting) sudo docker run --rm -v .:/src/ -w /src/ node:alpine npx prettier --prose-wrap always --write "**/*.md" npm warn exec The following package was not found and will be installed: prettier@3.6.0 .github/PULL_REQUEST_TEMPLATE.md 54ms (unchanged) BENCHMARKS.md 41ms (unchanged) changelogs/0.1.x.md 297ms (unchanged) changelogs/0.2.x.md 306ms (unchanged) changelogs/0.3.x.md 50ms (unchanged) changelogs/0.4.x.md 137ms (unchanged) changelogs/0.5.x.md 217ms (unchanged) changelogs/0.6.x.md 114ms (unchanged) CONTRIBUTING.md 12ms (unchanged) crates/README.md 8ms (unchanged) crates/uv-build/README.md 2ms (unchanged) crates/uv-client/README.md 2ms (unchanged) crates/uv-globfilter/README.md 6ms (unchanged) crates/uv-pep440/Readme.md 8ms (unchanged) crates/uv-pep508/Readme.md 5ms (unchanged) crates/uv-python/python/packaging/README.md 2ms (unchanged) crates/uv-trampoline/README.md 17ms (unchanged) crates/uv-virtualenv/README.md 2ms (unchanged) docs/concepts/authentication.md 20ms (unchanged) docs/concepts/build-backend.md 20ms (unchanged) docs/concepts/cache.md 35ms (unchanged) docs/concepts/configuration-files.md 11ms (unchanged) docs/concepts/index.md 3ms (unchanged) docs/concepts/indexes.md 24ms (unchanged) docs/concepts/projects/build.md 5ms (unchanged) docs/concepts/projects/config.md 25ms (unchanged) docs/concepts/projects/dependencies.md 38ms (unchanged) docs/concepts/projects/index.md 3ms (unchanged) docs/concepts/projects/init.md 15ms (unchanged) docs/concepts/projects/layout.md 11ms (unchanged) docs/concepts/projects/run.md 7ms (unchanged) docs/concepts/projects/sync.md 15ms (unchanged) docs/concepts/projects/workspaces.md 15ms (unchanged) docs/concepts/python-versions.md 30ms (unchanged) docs/concepts/resolution.md 52ms (unchanged) docs/concepts/tools.md 20ms (unchanged) docs/getting-started/features.md 10ms (unchanged) docs/getting-started/first-steps.md 2ms (unchanged) docs/getting-started/help.md 5ms (unchanged) docs/getting-started/index.md 3ms (unchanged) docs/getting-started/installation.md 8ms (unchanged) docs/guides/index.md 2ms (unchanged) docs/guides/install-python.md 49ms (unchanged) docs/guides/integration/alternative-indexes.md 29ms (unchanged) docs/guides/integration/aws-lambda.md 102ms (unchanged) docs/guides/integration/dependency-bots.md 20ms (unchanged) docs/guides/integration/docker.md 38ms (unchanged) docs/guides/integration/fastapi.md 7ms (unchanged) docs/guides/integration/github.md 46ms (unchanged) docs/guides/integration/index.md 3ms (unchanged) docs/guides/integration/jupyter.md 16ms (unchanged) docs/guides/integration/marimo.md 6ms (unchanged) docs/guides/integration/pre-commit.md 14ms (unchanged) docs/guides/integration/pytorch.md 18ms (unchanged) docs/guides/package.md 9ms (unchanged) docs/guides/projects.md 11ms (unchanged) docs/guides/scripts.md 13ms (unchanged) docs/guides/tools.md 13ms (unchanged) docs/index.md 11ms (unchanged) docs/pip/compatibility.md 40ms (unchanged) docs/pip/compile.md 12ms (unchanged) docs/pip/dependencies.md 4ms (unchanged) docs/pip/environments.md 10ms (unchanged) docs/pip/index.md 4ms (unchanged) docs/pip/inspection.md 2ms (unchanged) docs/pip/packages.md 5ms (unchanged) docs/reference/benchmarks.md 2ms (unchanged) docs/reference/index.md 3ms (unchanged) docs/reference/installer.md 3ms (unchanged) docs/reference/policies/index.md 1ms (unchanged) docs/reference/policies/license.md 3ms (unchanged) docs/reference/policies/platforms.md 5ms (unchanged) docs/reference/policies/versioning.md 4ms (unchanged) docs/reference/resolver-internals.md 29ms (unchanged) docs/reference/troubleshooting/build-failures.md 19ms (unchanged) docs/reference/troubleshooting/index.md 2ms (unchanged) docs/reference/troubleshooting/reproducible-examples.md 9ms (unchanged) PIP_COMPATIBILITY.md 1ms (unchanged) README.md 15ms (unchanged) scripts/benchmark/README.md 1ms (unchanged) scripts/packages/built-by-uv/README.md 1ms (unchanged) scripts/packages/dependent_locals/first_local/README.md 0ms (unchanged) scripts/packages/dependent_locals/second_local/README.md 0ms (unchanged) scripts/packages/hatchling_editable/README.md 1ms (unchanged) scripts/packages/README.md 1ms (unchanged) scripts/packages/root_editable/README.md 0ms (unchanged) scripts/workspaces/albatross-virtual-workspace/packages/Unrelated.md 2ms (unchanged) SECURITY.md 3ms (unchanged) STYLE.md 16ms (unchanged) npm notice npm notice New minor version of npm available! 11.3.0 -> 11.4.2 npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.4.2 npm notice To update run: npm install -g npm@11.4.2 npm notice ➜ uv git:(docs/contributing-md-formatting) git status On branch docs/contributing-md-formatting nothing to commit, working tree clean ➜ uv git:(docs/contributing-md-formatting) ```
Co-authored-by: Dmitry Bychkov --- CONTRIBUTING.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 14b5197fe..f7be958a4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -165,6 +165,13 @@ After making changes to the documentation, format the markdown files with: npx prettier --prose-wrap always --write "**/*.md" ``` +Note that the command above requires Node.js and npm to be installed on your system. As an +alternative, you can run this command using Docker: + +```console +$ docker run --rm -v .:/src/ -w /src/ node:alpine npx prettier --prose-wrap always --write "**/*.md" +``` + ## Releases Releases can only be performed by Astral team members.