Ace: [JavaScript Linting] Suporte ESNext (async/await, propriedades de classe, etc)

Criado em 6 dez. 2016  ·  11Comentários  ·  Fonte: ajaxorg/ace

Estou sugerindo alterar a dica de javascript para usar o ESLint para melhor suporte aos recursos do ES6+.

Eu gostaria de poder usar propriedades de classe e async/await mais, mas também existem muitas outras regras de linting que são muito melhores que jshint.

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

Eu não analisei o quão difícil isso pode ser trocar o linter javascript, então não sei o quão realista é uma solicitação.

linters

Comentários muito úteis

Por favor, trabalhe nessa questão.

Todos 11 comentários

Esta é uma boa ideia e também necessária para o #3180.
Poderíamos baseá-lo nos arquivos de demonstração da Web do ESLint.

Por favor, trabalhe nessa questão.

A nova versão 2.10.0 do JSHint foi lançada com suporte para os novos recursos.

Como solução temporária - eu usei o ACE typescript, ele já tem await/async.

O texto datilografado não mostra um erro .. mas perde muitos outros erros.

não é apenas assíncrono/aguarda toda a sintaxe es6, incluindo novos operadores matemáticos como 8**2

A partir de hoje, esta edição tem 3 anos . O React já foi lançado há algum tempo, então certamente a demanda está aumentando para isso. O projeto ainda está bastante ativo, mas não há indicação de que isso esteja em nenhum roteiro oficial e parece que é um “sim, é isso que precisamos fazer, e provavelmente vamos fazê-lo”.

Podemos _por favor_ obter algum tipo de atualização aqui? @asa noturna ? @adamjimenez ?

Eu encontrei isso enquanto tentava encontrar o linter para arquivos CSS e improvisar algo meu, _/mode/javascript_worker.js_ 🔗

Esta configuração parece sugerir que ele já está configurado para suporte ESNext , pelo menos ao trabalhar no modo de trabalho Javascript para o trabalho javascript. Pessoalmente, isso não lançou nenhuma luz, mas talvez isso possa ajudar um de vocês

Tentei reconstruir o ace depois de substituir o arquivo jshint.js pelo mais recente. Isso evita que um erro seja mostrado para async/await. No entanto, também interrompe a exibição de erros para outros cenários (colchetes ausentes, strings não fechadas, etc.). Muito frustrante, suponho que o projeto Ace está morto.

Eu também tenho mexido com isso e consegui fazer funcionar. A documentação pode ser atualizada, foi bastante doloroso descobrir como todo o ecossistema funciona (levou várias horas) e depois aprendi que todas as mudanças eram necessárias em uma linha ... :/

Há um par de opções:
1) se você acabou de importar a versão compactada/minificada - precisa substituir: "esnext:!0" por "esversion:9"
https://raw.githubusercontent.com/ajaxorg/ace-builds/master/src-min/worker-javascript.js
2) você pode conferir o repositório e construir você mesmo. (Demora cerca de 1 minuto, então isso também é bastante fácil)

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

UPDATE : Desde que meu último comentário encontrou outra maneira:

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");

Impressionante!! Alguma indicação se você poderia especificar outras versões, como 6 para ES6 e assim por diante?

Também adicionarei, caso outros sejam novos no git ou não tenham configurado seu SSH com o Github, você também pode cloná-lo com: git clone https://github.com/ajaxorg/ace.git/ . _Tropei nisso mais vezes do que gostaria de admitir_

Esta página foi útil?
0 / 5 - 0 avaliações