Vize

Contributions

Merci d’avoir aidé à rendre Vize plus affûté. Le projet en est à sa phase de Real World Testing et en route vers la version alpha v1, donc de petits changements ciblés avec une vérification claire sont les plus faciles à examiner. Si vous êtes ici pour rapporter des résultats plutôt que pour ouvrir une PR, commencez par le guide Testing & Feedback.

Mise en place

Utilisez la version Node.js de .node-version et la version Rust de rust-toolchain.toml. L’espace de travail déclare une version minimale Rust prise en charge (MSRV) de 1.95.0 dans Cargo.toml ([workspace.package].rust-version; les contributions doivent être compilées sous cette version.

Le shell Nix par défaut contient la chaîne d’outils locale reproductible. Le support de Blacksmith Testbox est optionnel et se trouve dans un shell séparé avec la ligne de ligne de ligne Blacksmith, rsyncet GitHub épinglée :

nix develop             # local development
nix develop .#testbox   # hosted Testbox workflows

Installez les dépendances à partir de la racine de l’espace de travail :

vp install --frozen-lockfile --prefer-offline

Si vp n’est pas encore disponible, installez- Vite+ d’abord.

Échecs courants

Faites la vérification la plus étroite qui couvre votre changement, puis élargissez lorsque vous touchez le comportement partagé.

vp check <changed-files>
node --test tests/tooling/<test-file>.test.ts
cargo fmt --all -- --check
cargo test -p <crate>

Avant d’ouvrir une PR qui modifie les outils partagés, l’automatisation des releases, les liaisons natives ou le comportement du compilateur, exécutez localement la tâche de workspace pertinente depuis CI lorsque cela est possible.

Les workflows de build, test et lint root sont locaux par défaut et ne nécessitent pas d’identifiants hébergés :

vp run --workspace-root build
vp run --workspace-root test
vp run --workspace-root lint

Dans le shell de développement Nix, vp build, vp testet vp lint sont des abrégations pour ces tâches d’espace de travail.

Pour la parité d’inversion-CI Linux à commande unique, entrez dans le shell dédié Testbox. Le nix develop shell par défaut omet intentionnellement Blacksmith et n’a pas besoin de son artefact ou de ses identifiants hébergés :

nix develop .#testbox

Ensuite, lance le cycle de vie protégé ci-dessous. Il efface tout ancien identifiant de boîte avant le réchauffement, saute les tâches à distance si authentification, push ou échauffement échoue, et tente toujours d’arrêter une boîte réchauffée avec succès, même lorsqu’une tâche échoue :

run_testbox_checks() {
  unset BLACKSMITH_TESTBOX_ID testbox_output
  "$VIZE_BLACKSMITH_BIN" auth login || return
  git push --set-upstream origin "$(git branch --show-current)" || return

  if testbox_output="$(vp run --workspace-root testbox:warmup)"; then
    BLACKSMITH_TESTBOX_ID="$(printf '%s\n' "$testbox_output" | tail -n1)"
  else
    warmup_status=$?
    unset testbox_output
    return "$warmup_status"
  fi
  if [ -z "$BLACKSMITH_TESTBOX_ID" ]; then
    printf '%s\n' "Testbox warmup returned no box id." >&2
    unset BLACKSMITH_TESTBOX_ID testbox_output
    return 1
  fi
  export BLACKSMITH_TESTBOX_ID

  if vp run --workspace-root build:testbox &&
    vp run --workspace-root test:testbox &&
    vp run --workspace-root lint:testbox; then
    testbox_status=0
  else
    testbox_status=$?
  fi
  if vp run --workspace-root testbox:stop; then
    stop_status=0
  else
    stop_status=$?
  fi
  unset BLACKSMITH_TESTBOX_ID testbox_output

  if [ "$testbox_status" -ne 0 ]; then
    return "$testbox_status"
  fi
  return "$stop_status"
}
run_testbox_checks

Pour les modifications des actions sur GitHub, utilisez actrun pour lint ou prévisualiser le graphe de workflow avant de pousser :

vp run actrun:lint
vp run actrun:dry-run
vp run actrun:job --job check-js

Pour les modifications de tâches de Blacksmith Testbox, validez également la forme du workflow avec node --test tests/tooling/github-workflows.test.ts.

Discipline du changement du processeur de langage

Vize suit la pratique des projets compilateur de rustc, TypeScript, TypeScript-Go et Flow : classifie le changement, ajoute le plus petit élément significatif, examine la sortie générée sous forme de contrat, puis élargit à parité, performance ou portes de sortie lorsque la surface touchée en a besoin. Voir Language Engineering Practices pour la matrice complète de .

Utilisez l’une de ces classes de changement dans les PR lorsque cela est applicable :

  • Parseur ou AST

  • Compilateur et codegen

  • Analyse sémantique, lint et analyse croisée

  • Virtual TypeScript et vérification de type

  • Formateur et LSP

  • Emballage à l’exécution, version ou documentation

Pour les changements orientés vers le langage, incluez le différentiel de fixture ou instantané qui prouve le comportement. Pour rafrafraîchissement instantané, expliquez pourquoi la nouvelle sortie est correcte et évitez le churn de base large, sauf si la RP concerne spécifiquement cette famille de sortie.

Lorsqu’un dysmatch du compilateur commence à partir d’une reproduction externe ou d’un fichier projet local, utilisez le Compiler Inspector de terrain d’école pour inspecter la sortie officielle Vue, la sortie Vize, Virtual TS, VIR, et le graphe cross-file. Ajoutez le permalink de l’inspecteur au corps de relations publiques, puis obtenez le luminaire minimisé ou instantané complet qui transforme le résultat en contrat examiné. Les lots locaux peuvent être emballés avec vize inspector <file-or-glob>, et le transfert d’agent peut utiliser vize inspector --format agent.

Demandes de tirage

  • Utilisez les commits conventionnels pour les messages de commit et les titres PR, tels que fix(vite-plugin): surface SFC compile errors.

    • Gardez les RP concentrés sur un seul changement de comportement ou un changement de documentation/gouvernance.

  • Inclure des commandes de vérification dans l’organisme de relations publiques.

  • Ne rafraîchissez pas de grandes lignes de base snapshot à moins que la PR ne porte spécifiquement sur ces sorties.

  • N’incluez pas de secrets, de jetons de registre, de détails de vulnérabilité privée ou de chemins locaux de la machine dans rapports, engagements ou relations publiques.

Demandes de correction

Utilisez le modèle de rapport de correction pour les régressions, plantages, diagnostics incorrects, problèmes d’installation paquets et échecs de version. Utilisez le modèle de demande de fonctionnalité pour les nouvelles intégrations, les modifications d’API, les ou les améliorations du flux de travail. Une reproduction minimale — idéalement un lien d’inspecteur de terrain de jeu — rend un rapport de beaucoup plus rapide à appliquer.

Les rapports de sécurité devraient suivre SECURITY.md plutôt que les modèles publics correctifs.

Code de conduite et de gouvernance

En participant, vous acceptez de respecter les Contributor Covenant v2.1. Le modèle de gouvernance et le processus décisionnel sont documentés dans GOVERNANCE.md. Pour obtenir de l’aide le bon canal, voir SUPPORT.md.