Décrivez le bogue
C'est purement esthétique. Lors de l'importation automatique d'un fichier ou d'un composant dans VScode, les nouvelles importations ne sont pas ajoutées correctement aux fichiers.
.ts
et .svelte
.typescript.preferences.quoteStyle: single
dans VSCode, les importations utiliseront toujours des guillemets doubles.Reproduire
Créez un nouveau projet à partir de sveltejs/template
, créez un composant vierge Test.svelte
et importez-le automatiquement dans App.svelte
. Dans les projets TypeScript, vous pouvez également voir que les importations à partir .ts
fichiers
Comportement prévisible
Je m'attends à ce que l'importation automatique fonctionne exactement comme dans un fichier .ts
normal, mais avec une certaine indentation due à la balise de script.
Mon code aurait dû ressembler à ceci sans aucun travail manuel:
<script lang="ts">
import Test from './Test.svelte';
import { testStore } from './test';
export let name;
</script>
Système (veuillez compléter les informations suivantes) :
Le problème sous-jacent est que lors de l'importation à l'intérieur du modèle, le compilateur svelte lancera des erreurs car à ce stade, le code n'est pas valide. De cette façon, svelte2tsx
ne peut pas produire un fichier tsx
valide, nous nous contentons donc d'utiliser uniquement le contenu de la balise de script. Si l'analyseur génère un code valide, svelte2tsx
produira un fichier tsx
converti. Cela rend les importations tapuscrit insert en un point différent et notre cartographie de la généré tsx
à l' original svelte
les importations au sommet. Je ne sais pas comment nous pouvons contourner ces problèmes dans le bon sens. Adhérer aux préférences de l'utilisateur (style de citation) devrait cependant être faisable. Comme solution de contournement, vous pouvez utiliser la commande "Organiser les importations", et la mise en forme plus jolie prendra en charge les styles d'indentation et de guillemets.
Merci @dummdidumm pour la clarification et la solution de contournement! 😄
S'il existe un moyen de les insérer sous les importations existantes, ce serait une amélioration considérable par rapport à la façon dont cela fonctionne actuellement. L'extension serait un peu plus présentable (comme dans les didacticiels vidéo), et plus important encore, les importations sembleraient cohérentes (il est inhabituel de rechercher la dernière importation en haut).
Je viens de tester trois importations ( test
, test2
, test3
dans cet ordre) avec Vetur et elles ont été insérées dans les bonnes positions. Voici les résultats pour comparaison :
Vétur :
<script lang="ts">
import Vue from 'vue';
import { testStore1 } from './test';
import { testStore2 } from './test2';
import { testStore3 } from './test3';
export default Vue.extend({ /*...*/ });
</script>
Svelte pour VSCode :
<script lang="ts">import { testStore3 } from "./test3";
import { testStore2 } from "./test2";
import { testStore } from "./test";
export let name: string;
</script>
Le js/ts a un autre problème. Le sourcemap ne peut pas mapper la ligne suivante de la dernière importation à sa position d'origine.