Ace: [JavaScript Linting] Compatibilidad con ESNext (async/await, propiedades de clase, etc.)

Creado en 6 dic. 2016  ·  11Comentarios  ·  Fuente: ajaxorg/ace

Sugiero cambiar las sugerencias de javascript para usar ESLint para un mejor soporte de las características de ES6+.

Me gustaría poder usar las propiedades de clase y async/await al máximo, pero también hay muchas otras reglas de linting que funcionan mucho mejor que jshint.

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

No he investigado lo difícil que podría ser cambiar el linter de javascript, por lo que no sé qué tan realista es esta solicitud.

linters

Comentario más útil

Por favor, trabaje en este tema.

Todos 11 comentarios

Esta es una buena idea y también necesaria para el #3180.
Podríamos basarnos en los archivos de demostración web para ESLint.

Por favor, trabaje en este tema.

Se ha lanzado la nueva versión 2.10.0 de JSHint con soporte para las nuevas funciones.

Como solución temporal: he usado ACE mecanografiado, ya tiene await/async.

Typescript no muestra un error ... pero luego pierde muchos otros errores.

no es solo async/await, toda su sintaxis es6, incluidos nuevos operadores matemáticos como 8**2

A día de hoy, este problema tiene 3 años . React ha estado disponible por un tiempo, por lo que seguramente la demanda de esto está aumentando. El proyecto todavía está bastante activo, pero no hay indicios de que esté en ninguna hoja de ruta oficial y parece que es un "sí, eso es lo que tenemos que hacer, y probablemente lo haremos".

¿Podemos _por favor_ obtener algún tipo de actualización aquí? @alanoche ? @adamjimenez

Encontré esto mientras intentaba encontrar el linter para archivos CSS, y el jurado arregló algo propio, _/mode/javascript_worker.js_ 🔗

Esta configuración parece sugerir que ya está configurada para el soporte de ESNext , al menos cuando se trabaja en el modo de trabajador de Javascript para el trabajador de JavaScript. Personalmente, esto no arrojó ninguna luz, pero tal vez esto pueda ayudar a uno de ustedes.

Intenté reconstruir ace después de reemplazar el archivo jshint.js con el último. Esto evita que se muestre un error para async/await. Sin embargo, también evita que se muestren errores para otros escenarios (corchetes faltantes, cadenas no cerradas, etc.). Muy frustrante, supongo que el proyecto as está muerto.

He estado jugando con esto también y pude hacerlo funcionar. La documentación podría actualizarse, fue bastante doloroso desenterrar cómo funciona todo el ecosistema (tomó varias horas) y luego aprendí que todos los cambios necesarios son una línea... :/

Hay un par de opciones:
1) si acaba de importar la versión empaquetada/minificada, debe reemplazar: "esnext:!0" con "esversion:9"
https://raw.githubusercontent.com/ajaxorg/ace-builds/master/src-min/worker-javascript.js
2) puede consultar el repositorio y construirlo usted mismo. (Se tarda aproximadamente 1 minuto, por lo que también es 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

ACTUALIZACIÓN : Desde mi último comentario encontré otra forma:

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

¡¡Increíble!! ¿Alguna indicación de si podría especificar otras versiones, como 6 para ES6, etc.?

También agregaré, en caso de que otros sean nuevos en git o no hayan configurado su SSH con Github, también pueden clonarlo con: git clone https://github.com/ajaxorg/ace.git/ . _Tropecé con eso más veces de las que me gustaría admitir_

¿Fue útil esta página
0 / 5 - 0 calificaciones