Ace: [JavaScript Linting] ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ESNext (Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ/ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅, свойства класса ΠΈ Ρ‚. Π΄.)

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 6 Π΄Π΅ΠΊ. 2016  Β·  11ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ajaxorg/ace

Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ подсказку javascript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ESLint для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ES6+.

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойства класса ΠΈ async/await большС всСго, Π½ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ jshint.

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

Π― Π½Π΅ ΠΈΠ·ΡƒΡ‡Π°Π», насколько слоТно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΈΠ½Ρ‚Π΅Ρ€ javascript, поэтому я Π½Π΅ знаю, насколько это рСалистичный запрос.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π½Π°Π΄ этим вопросом.

ВсС 11 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя, ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для #3180.
ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Π·ΡΡ‚ΡŒ Π·Π° основу дСмонстрационныС Π²Π΅Π±-Ρ„Π°ΠΉΠ»Ρ‹ для ESLint.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π½Π°Π΄ этим вопросом.

Π’Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° новая вСрсия JSHint 2.10.0 с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’ качСствС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ β€” я использовал ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст ACE, Π² Π½Π΅ΠΌ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ await/async.

Typescript Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ... Π½ΠΎ пропускаСт ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ошибок.

это Π½Π΅ просто async/await, вСсь синтаксис es6, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½ΠΎΠ²Ρ‹Π΅ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ 8**2

На сСгодняшний дСнь этому выпуску 3 Π³ΠΎΠ΄Π° . React ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ отсутствуСт, поэтому, бСзусловно, спрос Π½Π° Π½Π΅Π³ΠΎ растСт. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ всС Π΅Ρ‰Π΅ довольно Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, Π½ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΅ΡΡ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Π΅, ΠΈ просто каТСтся, Ρ‡Ρ‚ΠΎ это Β«Π΄Π°, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ ΠΌΡ‹, вСроятно, сдСлаСм это».

МоТСм Π»ΠΈ ΠΌΡ‹, _поТалуйста_, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ здСсь ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅? @Π½Π°ΠΉΡ‚Π²ΠΈΠ½Π³ ? @адамхимСнСс ?

Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» это, ΠΊΠΎΠ³Π΄Π° пытался Π½Π°ΠΉΡ‚ΠΈ Π»ΠΈΠ½Ρ‚Π΅Ρ€ для Ρ„Π°ΠΉΠ»ΠΎΠ² CSS, ΠΈ ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΠ» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ своС, _/mode/javascript_worker.js_ πŸ”—

Π­Ρ‚Π° конфигурация, каТСтся, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΡƒΠΆΠ΅ настроСна для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ESNext , ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Javascript для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ javascript. Π›ΠΈΡ‡Π½ΠΎ это Π½Π΅ ΠΏΡ€ΠΎΠ»ΠΈΠ»ΠΎ свСт, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ· вас.

Π― попытался ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ace послС Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ„Π°ΠΉΠ»Π° jshint.js Π½Π° послСдний. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ошибки для async/await. Однако ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ останавливаСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ошибок для Π΄Ρ€ΡƒΠ³ΠΈΡ… сцСнариСв (ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ скобки, Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ строки ΠΈ Ρ‚.Β Π΄.). ΠžΡ‡Π΅Π½ΡŒ расстраиваСт, я полагаю, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ аса ΠΌΠ΅Ρ€Ρ‚Π².

Π― Ρ‚ΠΎΠΆΠ΅ возился с этим, ΠΈ я смог Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π±Ρ‹Π»ΠΎ довольно больно ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вся экосистСма (заняло нСсколько часов), Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ всС измСнСния Π½ΡƒΠΆΠ½Ρ‹ Π² ΠΎΠ΄Π½Ρƒ строчку... :/

Π•ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:
1) Ссли Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡƒΡŽ/ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ: "esnext:!0" Π½Π° "esversion:9"
https://raw.githubusercontent.com/ajaxorg/ace-builds/master/src-min/worker-javascript.js
2) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎ ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСбя. (Π­Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 1 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠΆΠ΅ довольно просто)

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

ΠžΠ‘ΠΠžΠ’Π›Π•ΠΠ˜Π• : ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠΉ послСдний ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ нашСл Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ:

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

ΠŸΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΉ!! Π›ΡŽΠ±Ρ‹Π΅ указания, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ вСрсии, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 6 для ES6 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅?

Π― Ρ‚Π°ΠΊΠΆΠ΅ добавлю, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с git ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π½Π΅ настроил свой SSH с Github, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ: git clone https://github.com/ajaxorg/ace.git/ . _Натыкался Π½Π° это большС Ρ€Π°Π·, Ρ‡Π΅ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ_

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

christianbs picture christianbs  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

RickStrahl picture RickStrahl  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

jakub-zawislak picture jakub-zawislak  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

aslushnikov picture aslushnikov  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

narraressan picture narraressan  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ