`sv check` détecte les erreurs et les warnings présents dans votre projet, comme par exemple : - du CSS non utilisé - des astuces d'accessibilité - des erreurs de compilateur liées à JavaScript/TypeScript Nécessite Node 16 ou plus récent. ## Installation Vous aurez besoin d'avoir le paquet `svelte-check` installé sur votre projet : ```bash npm i -D svelte-check ``` ## Usage ```bash npx sv check ``` ## Options ### `--workspace ` Path vers votre workspace. Tous les sous-dossiers à l'exception de `node_modules` et de ceux listés avec `--ignore` sont vérifiés. ### `--output ` Comment afficher les erreurs et les warnings. Voir [output conçu pour les machines](#Machine-readable-output). - `human` - `human-verbose` - `machine` - `machine-verbose` ### `--watch` Conserve le processus actif et écoute les changements. ### `--preserveWatchOutput` Empêche l'écran d'être effacé en mode _watch_. ### `--tsconfig ` Fournir un path vers un fichier `tsconfig` ou `jsconfig`. Le path peut être relatif au path du workspace ou absolu. Utiliser cette option implique que seuls les fichiers correspondant aux motifs décrits par `files`/`include`/`exclude` de votre fichier de configuration seront diagnostiqués. Cela implique également que les erreurs des fichiers TypeScript et JavaScript sont remontées. Si non fourni, la vérification traversera le projet depuis sa racine à la recherche du fichier `jsconfig`/`tsconfig` suivant. ### `--no-tsconfig` Utilisez cette option si vous souhaitez uniquement vérifier les fichiers Svelte trouvés dans et en-dessous du dossier actuel, en ignorant les fichiers `.js`/`.ts` (leur typage ne sera pas analysé). ### `--ignore ` Les fichiers/dossiers à ignorer, relativement à la racine du workspace. Les paths doivent être entre guillemets et séparés par des virgules. Exemple : ```bash npx sv check --ignore "dist,build" ``` N'a d'effet que lorsqu'utilisé avec `no-tsconfig`. Lorsqu'utilisé avec `--tsconfig`, ceci n'aura d'effet que sur les fichiers observés, pas sur les fichiers diagnostiqués, qui sont déterminés par le `tsconfig.json`. ### `--fail-on-warnings` Si fourni, les warnings provoqueront l'arrêt de `sv check` avec un code d'erreur. ### `--compiler-warnings ` Une liste de valeurs `code:behaviour` entre guillemets et séparées par des virgules où `code` est un [code de warning compilateur](../svelte/compiler-warnings) et `behaviour` est soit `ignore` soit `error` : ```bash npx sv check --compiler-warnings "css_unused_selector:ignore,a11y_missing_attribute:error" ``` ### `--diagnostic-sources ` Une liste de types de sources entre guillemets et séparées par des virgules qui doivent être analysées. par défaut, elles sont toutes actives. - `js` (inclut TypeScript) - `svelte` - `css` Exemple : ```bash npx sv check --diagnostic-sources "js,svelte" ``` ### `--threshold ` Filtre les diagnostics : - `warning` (défaut) — les erreurs et les warnings sont affichés - `error` — n'affiche que les erreurs ## Résolution de problèmes [!VO]Troubleshooting [Voir la documentation des outils](https://github.com/sveltejs/language-tools/blob/master/docs/README.md) pour plus d'informations sur la mise en place des préprocesseurs ou tout autre type d'assistance. ## Outputs machine [!VO]Machine-readable output Définir l'option `--output` à `machine` ou `machine-verbose` permet de formatter l'output d'une manière adaptée à la lecture par des machines, c-à-d au sein de pipelines CI, lors de vérifications de qualité de code, etc. Chaque ligne correspond à un nouvel enregistrement. Les lignes sont constituées de colonnes séparées par un espace. La première colonne de chaque ligne contient un timestamp en millisecondes pouvant être utilisé pour du suivi. La deuxième colonne fournit le "type de ligne", en fonction duquel le nombre et type de colonnes suivantes peuvent changer. La première colonne est de type `START` et contient le dossier du workspace (entre guillemets). Exemple : ``` 1590680325583 START "/home/user/language-tools/packages/language-server/test/plugins/typescript/testfiles" ``` Un nombre quelconque d'enregistrements `ERROR` ou `WARNING` peuvent suivre. Leur structure est identique et dépend de l'argument d'output. Si l'argument est `machine`, le nom de fichier, la position initiale en numéro de ligne et colonne, ainsi que le message d'erreur seront affiché. Le nom de fichier est relatif au dossier de workspace. Le nom de fichier et le message sont tout les deux entre parenthèses. Exemple : ``` 1590680326283 ERROR "codeactions.svelte" 1:16 "Cannot find module 'blubb' or its corresponding type declarations." 1590680326778 WARNING "imported-file.svelte" 0:37 "Component has unused export property 'prop'. If it is for external reference only, please consider using `export const prop`" ``` Si l'argument est `machine-verbose`, le nom de fichier, la position initiale en numéro de ligne et colonne, la position finale en numéro de ligne et colonne, le message d'erreur, le code de diagnostic, une description du code et la source du diagnostic (c-à-d svelte/typescript) lisibles par l'humain seront affichés. Le nom de fichier est relatif au dossier de workspace. Chaque diagnostic est représenté par une ligne [ndjson](https://en.wikipedia.org/wiki/JSON_streaming#Newline-Delimited_JSON) préfixée par le timestamp du log. Exemple : ``` 1590680326283 {"type":"ERROR","fn":"codeaction.svelte","start":{"line":1,"character":16},"end":{"line":1,"character":23},"message":"Cannot find module 'blubb' or its corresponding type declarations.","code":2307,"source":"js"} 1590680326778 {"type":"WARNING","filename":"imported-file.svelte","start":{"line":0,"character":37},"end":{"line":0,"character":51},"message":"Component has unused export property 'prop'. If it is for external reference only, please consider using `export const prop`","code":"unused-export-let","source":"svelte"} ``` L'output se termine par un message `COMPLETED` qui résume le nombre total de fichiers, d'erreurs et de warnings rencontrés pendant le processus. Exemple : ``` 1590680326807 COMPLETED 20 FILES 21 ERRORS 1 WARNINGS 3 FILES_WITH_PROBLEMS ``` Si l'application produit une erreur d'exécution, cette erreur sera affichée comme un enregistrement `FAILURE`. Exemple : ``` 1590680328921 FAILURE "Connection closed" ``` ## Crédits [!VO]Credits - Le projet Vue [VTI](https://github.com/vuejs/vetur/tree/master/vti) qui a servi de fondation pour `svelte-check` ## FAQ ### Pourquoi n'y a t'il pas d'option pour analyser uniquement des fichiers spéficiques (comme les fichiers en staging) ? [!VO]Why is there no option to only check specific files (for example only staged files)? `svelte-check` a besoin de "voir" tout le projet pour pouvoir effectuer correctement ses vérifications. Supposez que vous ayez renommé une prop d'un composant sans mettre à jour les différents endroit où cette prop est utilisé — tous les fichiers où cette prop est utilisée ont alors une erreur, mais vous ne la verriez pas si vous analysiez uniquement les fichiers modifiés.