Temui Roma dari pencipta Babel - penyusun, pembangun, linter, tes dalam satu botol





Hampir dua minggu lalu, sebuah posting blog tentang Roma keluar .



Roma adalah seperangkat alat yang lengkap - linter, compiler, builder, test runner, dan lainnya. Ini menargetkan JS, TS, HTML, JSON, Markdown, CSS. Proyek ini mencoba menyatukan seperangkat alat yang dibutuhkan untuk pengembangan front-end.



Roma bersifat monolitik dan mencakup semua alat ekosistem ujung depan tradisional. Tim pengembangan menyebutnya rantai alat. Poin pentingnya adalah bahwa ini bukan upaya untuk menggabungkan seperangkat alat yang ada, tetapi untuk mengembangkan seperangkat alat yang sama sekali baru. Semua ini harus dalam satu paket dan satu basis kode.



Roma sedang dikembangkan sebagai pengganti Babel, ESLint, Webpack, Prettier, Jest dan lainnya.



Mari kita lihat ke mana ini akan mengarah, sejujurnya saya puas dengan beberapa kompetisi dan pendekatan "non-monolitik" dalam alat pengembangan. Ya, untuk pemula, pintu masuknya tidak jelas, ada terlalu banyak alat yang kebanyakan bisa saling dipertukarkan. Mungkin dalam nuansa ini, Roma akan sedikit menurunkan ambang pintu masuk.



Kondisi saat ini







Roma masih dalam versi beta dan sudah melakukan beberapa tanggung jawabnya. Misalnya, linter sudah mendukung 100 aturan, termasuk yang biasa digunakan saat menggunakan Typecript dan React. Daftar lengkap aturan dapat ditemukan di sini. Sumber



terbuka proyek dimulai pada awal tahun dan proyek telah memiliki 70 kontributor dan lebih dari 600 komitmen. Secara umum, proyek sedang berkembang dan sejauh ini tidak ada redaman yang terlihat.



Sedikit sejarah



Pada tahun 2014, 6to5 (sekarang disebut Babel) telah dibuat. Ini adalah transpiler JavaScript yang mengkompilasi kode ES6 baru ke dalam ES5. Saat itu, proyek tersebut tidak menetapkan tujuan apa pun, tetapi dengan pertumbuhan popularitas, perkembangannya harus disesuaikan.



6to5 berganti nama menjadi Babel dan tujuan barunya adalah menjadi kerangka kerja umum untuk transformasi statis JavaScript. Ini berarti sistem plugin dan dukungan untuk fitur baru untuk standar JavaScript masa depan dan bahkan "proposal".



Tim pengembang berpikir untuk melangkah lebih jauh. Babel harus berada di bawah tenda penambang, linters, pemformat, penyorotan sintaks, pemeriksa jenis, alat kompilasi, dan sebagainya.



Pada 2016, pencipta Babel meninggalkan proyek tersebut. Seiring waktu, menjadi jelas bahwa pendekatan penyediaan API yang luas (secara harfiah semua internal) terlalu sulit untuk dipertahankan. Untuk mendukung toolkit di atas, secara harfiah semuanya harus ditulis ulang. Arsitektur proyek terkait dengan keputusan yang dibuat penulis pada tahun 2014, hanya mempelajari cara kerja parser dan kompiler AST. Perubahan tersebut akan memengaruhi sebagian besar API tanpa kompatibilitas ke belakang.



Pengembang alat JavaScript menghabiskan banyak waktu untuk memproses kode sumber. Babel, ESlint, Webpack, semuanya melakukan hal yang sama sebagian.



Linter dalam ekosistem JavaScript seperti kompiler. Keduanya mengambil kode sumber sebagai masukan, keduanya memproses dan mengeluarkan kode dan kesalahan (jika ada). Hanya kode yang diterima berbeda. Dalam kasus linter, ini diformat kode sumber dengan tambalan.



Semakin kuat infrastruktur kompilasi Anda, semakin kuat linternya. Hal yang sama berlaku untuk alat lain yang memproses kode dengan satu atau lain cara. Kami dapat membangun alat yang lebih kuat menggunakan kerangka umum yang mudah diadaptasi.



Roma adalah penerus spiritual Babel. Saya mempelajari pelajaran saya dan menetapkan tujuan yang jelas. Daripada menyediakan API publik yang terlalu banyak untuk alat lain, kami mengumpulkan semuanya di satu tempat. Saya sangat senang mencoba sesuatu yang baru yang belum pernah dilihat JavaScript dan ekosistem web sebelumnya.


- Sebastian McKenzie



Menggunakan



Roma dapat diinstal menggunakan Benang atau NPM:



yarn add rome


npm install rome


Pembuatan proyek



Agar Roma dapat menemukan file Anda, dibutuhkan konfigurasi. Untuk membuat proyek secara otomatis, Anda dapat menggunakan:



rome init


Perintah ini akan membuat direktori .config dan meletakkan rome.rjson di sana , dengan konfigurasi proyek.



Jika Anda sudah memiliki proyek, Anda dapat langsung menerapkan pemformatan dan perbaikan secara otomatis:



rome init --apply


RJSON adalah ekstensi JSON yang menambahkan beberapa fitur. Misalnya komentar di JSON.


Anda dapat memulai linter dengan



rome check


Linting



Roma dirancang untuk memberikan informasi sebanyak mungkin untuk memperbaiki kesalahan. Proyek ini memiliki semacam kredo:



UI Kaya (hasil di konsol): Informasi yang diformat dengan baik, penyorotan sintaks, tautan, daftar, dan banyak lagi.



Perbaikan: Roma dapat memperbaiki banyak bug (seperti linter) dan menerapkannya secara otomatis. Jika ada beberapa solusi, alat tersebut memberi Anda pilihan.



Proses peninjauan: CLI kaya secara interaktif dan memungkinkan Anda membuat keputusan tentang perbaikan dan mengatasi semua kesalahan langsung di konsol.



Editor: Roma terintegrasi dengan editor, yang memungkinkan Anda melakukan pemformatan untuk menyimpan, menyoroti kesalahan, dll.



Pelestarian: Roma menyimpan file asli sebelum membuat perubahan. MenggunakanRoma pulih , Anda dapat memutar kembali perbaikannya.







Alih-alih kesimpulan



Meskipun alat ini masih dalam pengembangan aktif, bagaimanapun juga alat ini sudah dapat dicoba. Hal utama adalah bahwa ternyata tidak seperti ini:







Dokumentasi nonaktif



All Articles