Ace: [JavaScript Linting] Prise en charge d'ESNext (asynchrone/attente, propriétés de classe, etc.)

Créé le 6 déc. 2016  ·  11Commentaires  ·  Source: ajaxorg/ace

Je suggère de modifier l'indication javascript pour utiliser ESLint pour une meilleure prise en charge des fonctionnalités ES6 +.

J'aimerais pouvoir utiliser les propriétés de classe et async/wait le plus, mais il existe également des tonnes d'autres règles de linting qu'il fait bien mieux que jshint.

class Foo {
    bar = 'baz';
}
async function foo () {
    const bar = await baz();
}

Je n'ai pas examiné à quel point il pourrait être difficile d'échanger le linter javascript, donc je ne sais pas à quel point cette demande est réaliste.

linters

Commentaire le plus utile

Merci de travailler sur ce problème.

Tous les 11 commentaires

C'est une bonne idée et également nécessaire pour #3180.
Nous pourrions le baser sur les fichiers de démonstration Web pour ESLint.

Merci de travailler sur ce problème.

La nouvelle version 2.10.0 de JSHint a été publiée avec la prise en charge des nouvelles fonctionnalités.

Comme solution de contournement temporaire - j'ai utilisé le script dactylographié ACE, il a déjà wait/async.

Typescript ne montre pas d'erreur .. mais il manque alors beaucoup d'autres erreurs.

ce n'est pas seulement async/wait toute sa syntaxe es6, y compris de nouveaux opérateurs mathématiques comme 8**2

A ce jour, ce problème a 3 ans . React est sorti depuis un certain temps maintenant, donc la demande augmente sûrement pour cela. Le projet est toujours assez actif, mais il n'y a aucune indication que cela figure sur une feuille de route officielle et il semble juste que c'est un, "ouais c'est ce que nous devons faire, et nous allons probablement le faire."

Pouvons-nous _s'il vous plaît_ obtenir une sorte de mise à jour ici ? @nightwing ? @adamjimenez ?

J'ai trouvé ceci en essayant de trouver le linter pour les fichiers CSS, et j'ai truqué quelque chose à moi, _/mode/javascript_worker.js_ 🔗

Cette configuration semble suggérer qu'elle est déjà configurée pour le support ESNext , du moins lorsque vous travaillez en mode de travail Javascript pour le travailleur javascript. Personnellement, cela n'a pas éclairé, mais peut-être que cela peut aider l'un d'entre vous

J'ai essayé de reconstruire ace après avoir remplacé le fichier jshint.js par le dernier. Cela empêche l'affichage d'une erreur pour async/wait. Cependant, cela empêche également les erreurs d'être affichées pour d'autres scénarios (parenthèses manquantes, chaînes non fermées, etc.). Très frustrant, je suppose que le projet ace est mort.

J'ai aussi joué avec ça et j'ai réussi à le faire fonctionner. La documentation pouvait être mise à jour, c'était plutôt pénible de creuser le fonctionnement de tout l'écosystème (a pris plusieurs heures) et puis j'ai appris que tout changement était nécessaire sur une seule ligne... :/

Il existe plusieurs options :
1) si vous venez d'importer la version packagée/minifiée - vous devez remplacer : "esnext:!0" par "esversion:9"
https://raw.githubusercontent.com/ajaxorg/ace-builds/master/src-min/worker-javascript.js
2) vous pouvez consulter le référentiel et vous construire. (Cela prend environ 1 minute, donc c'est aussi assez facile)

git clone [email protected]:ajaxorg/ace.git
npm install
nano +82 lib/ace/mode/javascript_worker.js // replace "esnext: true," with "esversion: 9"
node Makefile.dryice.js full --target ../ace-builds

MISE À JOUR : Depuis mon dernier commentaire, j'ai trouvé un autre moyen :

var editor = ace.edit("editor");
editor.session.on('changeMode', function(e, session){
    if ("ace/mode/javascript" === session.getMode().$id) {
        if (!!session.$worker) {
            session.$worker.send("setOptions", [{
                "esversion": 9,
                "esnext": false,
            }]);
        }
    }
});
editor.session.setMode("ace/mode/javascript");

Impressionnant!! Une indication si vous pouviez spécifier d'autres versions, comme 6 pour ES6 et ainsi de suite ?

J'ajouterai également, au cas où d'autres seraient nouveaux sur git ou n'auraient pas configuré leur SSH avec Github, vous pouvez également le cloner avec : git clone https://github.com/ajaxorg/ace.git/ . _Je suis tombé dessus une fois plus que je ne voudrais l'admettre_

Cette page vous a été utile?
0 / 5 - 0 notes