Ergonomics of vp pack + plugins
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- typescript
- Domaine
- build-system, tooling
Piste de recherche
Commencez par le chemin d’extraction de configuration utilisé par vp pack et le comportement de lazyPlugins contrôlé par VP_RESOLVING_CONFIG_METADATA ; l’issue fournit une reproduction dans vite.config.ts. Exécutez vp pack avec le plugin fourni et suivez la manière dont root et pack.plugins sont transmis à tsdown. Le travail est considéré comme terminé lorsque les plugins de pack s’exécutent tout en restant lazy pour vp lint et vp fmt, et que la composition des plugins de root est clarifiée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Configuring plugins for library packaging via vp pack has confusing ergonomics and a potential bug when using lazyPlugins:
- Root
pluginsare ignored byvp pack: In a library project usingvite.config.ts, plugins configured at the root (plugins: [...]) are not forwarded totsdownduringvp pack. Users must define them redundantly underpack.plugins. lazyPluginsfails silently insidepack.plugins: If a user attempts to wrappack.pluginsinlazyPlugins(() => [...])to avoid running plugin factories duringvp lintorvp fmt, the plugins never execute duringvp pack.
Root Cause
When vp pack extracts the tsdown config from vite.config.ts, VP_RESOLVING_CONFIG_METADATA is set to "1".
Inside lazyPlugins:
function lazyPlugins(cb) {
if (process.env["VP_RESOLVING_CONFIG_METADATA"] === "1") return;
const result = cb();
return result;
}
Because the metadata environment marker is active during config extraction for vp pack, lazyPlugins returns undefined. Consequently, tsdown runs with no plugins.
Reproduction
In vite.config.ts:
import { defineConfig, lazyPlugins } from 'vite-plus';
function myPlugin() {
return {
name: 'test-plugin',
buildStart() {
console.log('--- PLUGIN EXECUTED ---');
},
};
}
export default defineConfig({
pack: {
entry: ['src/index.ts'],
// ❌ Fails: '--- PLUGIN EXECUTED ---' is never printed
plugins: lazyPlugins(() => [myPlugin()]),
// ⚠️ Works, but runs eagerly during `vp lint` / `vp fmt`:
// plugins: [myPlugin()],
},
// ❌ Ignored by `vp pack`:
// plugins: [myPlugin()],
});
Run:
vp pack
Suggested solution
lazyPluginsshould evaluate when resolving the build pipeline forvp pack, so plugins can be lazily loaded without executing duringvp check/vp fmt/vp lint.- Ideally, plugins defined at the root (
plugins: [...]) should either auto merge withpack.pluginsby default when building libraries, or vite-plus should provide clear ergonomics/typing on how root Vite plugins vs. pack plugins compose. It's frankly confusing having two separate places to specify the plugin arrays.
Alternative
No response
Additional context
No response
Validations
- Read the Contributing Guidelines.
- Confirm this request is for Vite+ itself and not for Vite, Vitest, tsdown, Rolldown, or Oxc.
- Check that there isn't already an issue requesting the same feature.
- Langage dominant
- Rust
- Étoiles
- 6.5k
- Forks
- 296
- Merge moyen
- 1 j 59 min
- PR mergées (30 j)
- 235
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de voidzero-dev/vite-plus
-
pending triage
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
voidzero-dev/vite-plus#3235 ·
Les mainteneurs répondent en général sous 1 jour
-
Docker guide: the runtime stage needs libatomic1 for Node.js 25 and laterPeut-être pris @kshanxs l’a pris il y a 6 jours. Ouvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
voidzero-dev/vite-plus#3219 · 2 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
pending triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
voidzero-dev/vite-plus#2882 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
vpx: support ECMAScript decorators after upstream Oxc support landsPeut-être pris @fengmk2 l’a pris aujourd’hui. Ouverte
voidzero-dev/vite-plus#3292 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Executables throwingPeut-être pris @voidzero-bot l’a pris aujourd’hui. Ouverte- P2: has workaround pending triage triage: fix verified
Difficulté 4/5 3-5 jours Accessibilité débutants 20/100
voidzero-dev/vite-plus#3290 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de voidzero-dev/vite-plus
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
penso/herdr-gpui#934 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Y-ASLant/ElegantClipboard#178 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
linxiv-dev/linXiv#384 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
priority middle
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
KATO-Hiro/AtCoderClans#12945 ·
Les mainteneurs répondent en général sous 1 jour
-
bug drawings ui
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
userFRM/egui-charts#1595 ·
Les mainteneurs répondent en général sous 1 jour