voidzero-dev / voidzero-dev/vite-plus
Feat: add "definePackageConfig" and "defineRootConfig" to make type definition closer to actual work
- Langage dominant
- Rust
- Étoiles
- 5.8k
- Forks
- 262
- Merge moyen
- 23 h 18 min
- PR mergées (30 j)
- 139
Description
### Description
current, defineConfig type definition allow to write root only option(e.g. run.enablePrePostScripts) to package. but actually, it does not works. this problem is not good of developer experience.
### Suggested solution
Add "definePackageConfig" and "defineRootConfig" function. this will be exported by "vite-plus". "defineRootConfig" is just alias of "defineConfig" but "definePackageConfig" has new type definition.
### code example
```typescript
// workspace/packages/main/vite.config.ts
// this is package's config file.
import { definePackageConfig } from "vite-plus"
export default definePackageConfig({
run: {
enablePrePostScripts:true // happen type error because run.enablePrePostScripts is root only option
}
})
```
```typescript
// workspace/vite.config.ts
// this is root's config.
import { defineRootConfig } from "vite-plus"
export default defineRootConfig({
run: {
enablePrePostScripts:true // does not happen type error.
}
})
```
also, this is just coding rules. no one can stop to use "defineConfig" or "defineRootConfig" in package's vite.config.ts.
this proposal make "defineConfig" deprecated and recommend use new function.
### Alternative
Add more readable jsdoc e.g. "@root-only - this option does not work on package's config". but probably, developer will fail to notice.
### Additional context
_No response_
### Validations
- [x] Read the [Contributing Guidelines](https://github.com/voidzero-dev/vite-plus/blob/main/CONTRIBUTING.md).
- [x] Confirm this request is for Vite+ itself and not for Vite, Vitest, tsdown, Rolldown, or Oxc.
- [x] Check that there isn't already an issue requesting the same feature.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par localiser la définition de type existante de defineConfig et le point d’entrée d’exportation de vite-plus. Suivez la manière dont les types de configuration de root et de package sont représentés, puis vérifiez que defineRootConfig accepte les options propres à root tandis que definePackageConfig les refuse ; vérifiez également les recommandations de dépréciation proposées pour defineConfig.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- developer-experience
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 58/100