vite icon indicating copy to clipboard operation
vite copied to clipboard

Re-export PostCSS config type from `postcss-load-config`

Open benedictleejh opened this issue 11 months ago • 2 comments

Description

As a developer using Vite I want to be able to write type-safe PostCSS configs using the same version of postcss-load-config Vite uses so that I do not accidentally write configs that Vite cannot load correctly.

Suggested solution

In Vite, we could re-export the type postcssrc.Config from postcss-load-config so that developers can use that type to write type-safe PostCSS configs.

Alternative

  • Not vendor postcss-load-config code (as suggested in https://github.com/vitejs/vite/issues/15869#issuecomment-1939414914)
  • Writing PostCSS config inside Vite config
    • This only accepts the array format, and many examples use the object format; converting from the object format to the array format is not the most straightforward, especially if plugin options are involved
    • On a more subjective note, I prefer having each tool's config in a separate file, as it helps me mentally separate the context I need to consider
  • Adding a devDependency on postcss-load-config per project to get access to the type in each project using PostCSS
    • This requires that all projects using Vite keep track of the version of postcss-load-config used by Vite to not use a wrong version and accidentally write a wrong config
  • Not writing type-safe configs

Additional context

Now that Vite 6 has updated postcss-load-config to v6, developers can now load TypeScript PostCSS config files easily, but ensuring that these configs are type-safe require us to add an additional dependency on postcss-load-config, which is less than ideal due to the possibility of a project's postcss-load-config differing from Vite's, which can lead to hard to debug errors.

Validations

benedictleejh avatar Dec 31 '24 11:12 benedictleejh

Sounds like a good idea to me 👍

bluwy avatar Jan 02 '25 12:01 bluwy

i want to work on this issue

maynkxx avatar Nov 12 '25 06:11 maynkxx