Ace: [JavaScript Linting] Mendukung ESNext (async/menunggu, properti kelas, dll)

Dibuat pada 6 Des 2016  ·  11Komentar  ·  Sumber: ajaxorg/ace

Saya menyarankan untuk mengubah petunjuk javascript untuk menggunakan ESLint untuk dukungan yang lebih baik dari fitur ES6+.

Saya ingin dapat menggunakan properti kelas dan async/menunggu paling banyak, tetapi ada juga banyak aturan linting lain yang jauh lebih baik daripada jshint.

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

Saya belum melihat betapa sulitnya menukar linter javascript, jadi saya tidak tahu seberapa realistis permintaan ini.

linters

Komentar yang paling membantu

Tolong kerjakan soal ini.

Semua 11 komentar

Ini adalah ide yang bagus dan juga diperlukan untuk #3180.
Kami dapat mendasarkannya dari file demo web untuk ESLint.

Tolong kerjakan soal ini.

JSHint versi 2.10.0 baru telah dirilis dengan dukungan untuk fitur-fitur baru.

Sebagai solusi sementara - Saya telah menggunakan skrip ACE, itu sudah menunggu/async.

TypeScript tidak menunjukkan kesalahan .. tetapi kemudian melewatkan banyak kesalahan lainnya.

ini bukan hanya async/menunggu semua sintaks es6 termasuk operator matematika baru seperti 8**2

Sampai hari ini, masalah ini sudah berusia 3 tahun . React telah keluar beberapa saat sekarang jadi pasti permintaan meningkat untuk ini. Proyek ini masih cukup aktif, tetapi tidak ada indikasi bahwa ini ada di peta jalan resmi dan sepertinya itu adalah, "ya itulah yang perlu kita lakukan, dan kita mungkin akan melakukannya."

Bisakah kami _please_ mendapatkan semacam pembaruan di sini? @sayap malam ? @adamjimenez ?

Saya menemukan ini ketika mencoba menemukan linter untuk file CSS, dan juri memasang sesuatu milik saya sendiri, _/mode/ javascript_worker.js_

Konfigurasi ini tampaknya menunjukkan bahwa itu sudah diatur untuk dukungan ESNext , setidaknya ketika bekerja dalam mode pekerja Javascript untuk pekerja javascript. Secara pribadi ini tidak menjelaskan apapun, tapi mungkin ini bisa membantu kalian semua

Saya mencoba membangun kembali ace setelah mengganti file jshint.js dengan yang terbaru. Ini mencegah kesalahan ditampilkan untuk async/menunggu. Namun itu juga menghentikan kesalahan yang ditampilkan untuk skenario lain (kurung hilang, string tidak tertutup, dll). Sangat membuat frustrasi, saya kira proyek ace sudah mati.

Saya telah mengutak-atik ini juga dan saya bisa membuatnya bekerja. Dokumentasi dapat diperbarui, agak menyakitkan untuk menggali bagaimana seluruh ekosistem bekerja (membutuhkan beberapa jam) dan kemudian mengetahui bahwa semua perubahan diperlukan adalah satu baris... :/

Ada beberapa opsi:
1) jika Anda baru saja mengimpor versi yang dikemas/diperkecil - perlu mengganti: "esnext:!0" dengan "esversion:9"
https://raw.githubusercontent.com/ajaxorg/ace-builds/master/src-min/worker-javascript.js
2) Anda dapat memeriksa repo dan membangun sendiri. (Dibutuhkan sekitar 1 menit, jadi ini juga agak mudah)

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

PEMBARUAN : Sejak komentar terakhir saya menemukan cara lain:

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

Luar biasa!! Adakah indikasi jika Anda dapat menentukan versi lain, seperti 6 untuk ES6 dan seterusnya?

Saya juga akan menambahkan, jika orang lain baru mengenal git atau belum mengatur SSH mereka dengan Github, Anda juga dapat mengkloningnya dengan: git clone https://github.com/ajaxorg/ace.git/ . _Tersandung pada itu sekali lagi daripada yang ingin saya akui_

Apakah halaman ini membantu?
0 / 5 - 0 peringkat