ほぼ2週間前、ローマに関するブログ投稿が出ました。
Romeは、リンター、コンパイラー、ビルダー、テストランナーなどのツール一式です。 JS、TS、HTML、JSON、Markdown、CSSを対象としています。このプロジェクトは、フロントエンド開発に必要な一連のツールを統合しようとしています。
ローマはモノリシックであり、従来のフロントエンドエコシステムツールがすべて含まれています。開発チームはそれをツールチェーンと呼んでいます。重要な点は、これは既存のツールセットをマージする試みではなく、まったく新しいツールセットを開発する試みであるということです。これはすべて、1つのパッケージと1つのコードベースに含まれている必要があります。
Romeは、Babel、ESLint、Webpack、Prettier、Jestなどの代替として開発されています。
これがどこにつながるか見てみましょう。正直なところ、私はいくつかの競争と開発ツールの「非モノリシック」アプローチに満足しています。はい、初心者にとって、入り口は明白ではありません。ほとんど交換可能なツールが多すぎます。おそらくこのニュアンスで、ローマはエントリーのしきい値をわずかに下げます。
現在の状態
ローマはベータ版であり、すでにその責任の一部を行っています。たとえば、リンターは、TypescriptとReactを使用するときに一般的に使用されるルールを含め、すでに100のルールをサポートしています。ルールの完全なリストはここにあります。
プロジェクトのオープンソースは年の初めに始まり、プロジェクトにはすでに70人の貢献者と600人以上のコミットがあります。一般的に、プロジェクトは開発中であり、これまでのところ減衰は見られません。
ちょっとした歴史
2014年に、6to5(現在はBabelと呼ばれています)が作成されました。これは、新しいES6コードをES5にコンパイルしたJavaScriptトランスパイラーです。当時、プロジェクトは目標を設定していませんでしたが、人気の高まりとともに、開発を調整する必要がありました。
6to5はBabelに名前が変更され、新しい目標はJavaScript静的変換の共通フレームワークになることでした。これは、プラグインシステムと、将来のJavaScript標準および提案の新機能のサポートを意味しました。
開発チームはさらに進んでいくことを考えました。 Babelは、ミニファイア、リンター、フォーマッタ、構文の強調表示、タイプチェッカー、コンパイルツールなどの内部にある必要があります。
2016年、バベルの作成者はプロジェクトを去りました。時間の経過とともに、幅広いAPI(文字通りすべての内部)を提供するアプローチを維持するのが難しすぎることが明らかになりました。上記のツールキットをサポートするには、文字通りすべてを書き直す必要があります。プロジェクトのアーキテクチャは、ASTパーサーとコンパイラーがどのように機能するかを研究するだけで、著者が2014年に下した決定に関連しています。変更は、下位互換性なしでほとんどのAPIに影響します。
JavaScriptツールの開発者は、ソースコードの処理に膨大な時間を費やしています。 Babel、ESlint、Webpackは、すべて部分的に同じことをしています。
JavaScriptエコシステムのリンターはコンパイラのようなものです。どちらもソースコードを入力として受け取り、それを処理してコードとエラー(存在する場合)を出力します。受信したコードのみが異なります。リンターの場合、これはパッチ付きのフォーマットされたソースコードです。
コンパイルインフラストラクチャが強力であるほど、リンターも強力になります。同じことが、何らかの方法でコードを処理する他のツールにも当てはまります。適応が容易な共通のフレームワークを使用して、より強力なツールを構築できます。
ローマはバベルの精神的な後継者です。私は自分のレッスンを学び、明確な目標を設定しました。他のツールに膨大な量のパブリックAPIを提供する代わりに、それらすべてを1か所に集めます。JavaScriptとWebエコシステムがこれまでに見たことのない新しい何かを試すことにワクワクしています。
-セバスチャンマッケンジー
使用する
Romeは、YarnまたはNPMを使用してインストールできます。
yarn add rome
npm install rome
プロジェクトの作成
Romeがファイルを見つけるには、構成が必要です。プロジェクトを自動的に作成するには、次を使用できます。
rome init
このコマンドは、プロジェクト構成とともに.configディレクトリを作成し、そこにrome.rjsonを配置します。
既存のプロジェクトがある場合は、フォーマットと修正をすぐに自動的に適用できます。
rome init --apply
RJSONは、いくつかの機能を追加するJSON拡張機能です。たとえば、JSONのコメント。
あなたはリンターを始めることができます
rome check
リンティング
Romeは、エラーを修正するために可能な限り多くの情報を提供するように設計されています。プロジェクトには一種の信条があります。
リッチUI(コンソールに表示されます):適切にフォーマットされた情報、構文の強調表示、リンク、リストなど。
修正:ローマは多くのバグ(リンターなど)を修正し、それらを自動的に適用できます。複数の解決策がある場合、ツールはあなたに選択肢を与えます。
レビュープロセス:CLIはインタラクティブに豊富で、修正に関する決定を下し、コンソールですべてのエラーを確認できます。
エディター:Romeはエディターと統合されているため、保存やエラーの強調表示などのフォーマットを行うことができます。
保存:Romeは、変更を加える前に元のファイルをキャッシュします。使用するromeが回復し、修正をロールバックできます。
結論の代わりに
このツールはまだ活発に開発されていますが、すでに何らかの方法で試すことができます。主なものは、それはこのように判明していないことである:
オフのドキュメント