web-dev-qa-db-fra.com

Commande d'exécution automatique de VSCODE Extension sur fichier Enregistrer

Comment aurais-je VSCODE Auto Run 2 Commandes séparées lors de l'économie de fichiers? Serait pour le formatage du document et des importations de tri automatique.

3
Callum OKane

Il n'y a pas de support par défaut pour exécuter les tâches ou les commandes, sur Enregistrer (OnSave). Cependant, il y a une prise en charge de la 3ème partie via l'extension VSCODE "Exécuter sur Enregistrer" .

Voici le lien: https://marketplace.visualstudio.com/items?itemname=emeraldwalk.RunonSave

C'est une extension très populaire, je l'ai utilisée une fois de retour et cela a bien fonctionné pour mon cas d'utilisation.

De plus, si vous voulez simplement pelucher ou formater un code, la sauvegarde peut être effectuée via les paramètres VSCode.

Modifier le 20 juin à 21h04 UTC

Si vous souhaitez ajouter la commande à vos paramètres, vous devez configurer une extension, qui est expliquée dans les extensions readme.md, qui peuvent être visualisées en cliquant sur l'icône Extensions dans l'explorateur Extensions VSCode.

Configuration

Ajouter "Emeraldwalk.RunonSave" Configuration à Paramètres utilisateur ou espace de travail.

  • "Shell" - (facultatif) Chemin de coque à utiliser avec les options Child_Process.exec qui exécute des commandes.
  • "Autoclearconsole" - (facultatif) CLEAR VSCODE SORTIE CONSOLE Chaque fois que les commandes de l'heure sont exécutées. Par défaut à FALSE.
  • "Commandes" - Array de commandes qui seront exécutées chaque fois qu'un fichier est enregistré. [.____]
    • "Match" - une regex pour correspondre quels fichiers pour exécuter des commandes sur

    Remarque Comme il s'agit d'une regex, et aussi dans les gastrastrices de chaîne JSON, il doit être à double échappée, comme lors de la ciblage des dossiers. par exemple. "Match": "Quelques \\\\ dossier \\\\\. *"

    • "cmd" - commande à courir. Peut inclure des paramètres qui seront remplacés au moment de l'exécution (voir section des jetons de placement ci-dessous).
    • "ISASYNC" (facultatif) - Par défaut à FALSE. Si la vraie, la commande suivante sera exécutée avant que celui-ci ne finisse.

Exemple de configuration

Cette configuration d'échantillon exécutera des instructions d'écho, y compris le chemin de fichier enregistré. Dans cet exemple, la première commande est ASYNC, la deuxième commande sera donc exécutée immédiatement même si elle n'est pas terminée. Étant donné que la seconde n'est pas ASYNC, la troisième commande n'exécutera pas tant que la seconde est terminée.

"emeraldwalk.runonsave": {
    "commands": [
        {
            "match": ".*",
            "isAsync": true,
            "cmd": "echo 'I run for all files.'"
        },
        {
            "match": "\\.txt$",
            "cmd": "echo 'I am a .txt file ${file}.'"
        },
        {
            "match": "\\.js$",
            "cmd": "echo 'I am a .js file ${file}.'"
        },
        {
            "match": ".*",
            "cmd": "echo 'I am ${env.USERNAME}.'"
        }
    ]
}


Configuration d'une commande à exécuter lorsque vous enregistrez, ne sera pas aussi simple que de frapper [F1] pour ouvrir l'entrée rapide et trouver la tâche des extensions que vous souhaitez exécuter. Vous devrez suivre les instructions et quand vous serez coincé, vous devrez peut-être revenir et poser une question sur la question que vous rencontrez ou sur Google. Si votre utilisateur Linux, ou si vous avez beaucoup d'expérience MS-DOS ou POWERSHELL, cela sera assez simple.

2
JΛY-ÐΞV

Comme je l'ai noté dans un commentaire, il existe un certain nombre d'extensions "Exécution sur Sauvegarder". Voici un qui dirigera des commandes externes, comme celles d'une extension. Et cela semble être plus récent et mieux entretenu que certains.

exécutez-le

Cadre d'échantillon:

"runItOn": {
    "commands": [
        {
            "match": ".*",
            "isShellCommand" : false,
            "cmd": "myExtension.amazingCommand"
        },
        {
            "match": "\\.txt$",
            "cmd": "echo 'Executed in the terminal: I am a .txt file ${file}.'"
        }
    ],
    "watchers": [
        {
            "match": "**/*.js",
            "cmd": "echo 'Changes detected on js files.'"
        }
    ]
}

myExtension.amazingCommand est ce que vous recherchez.

0
Mark

Si vous voulez juste un code de format, vérifiez que les paramètres d'éditeur natif activés au lieu d'installer Runonsave enter image description here

0
Solo.dmitry