1. はじめに
-
Rspack は、 Rust
ByteDance Web Infra
言語に基づいて Byte チームによって開発された高性能ビルド ツールです。Web
-
Rust は、効率的で信頼性の高い汎用の高級言語です。その効率の高さは開発効率だけでなく、実行効率も高く評価されており、開発効率と実行効率の両方を考慮した数少ない言語の1つです。
-
Rspack
現在React
、Vue
、Svelte
、 、Solid
、NestJS
、予備Angular
サポートをサポートしていますが、多くの機能が欠落しており、その他には 、 などが含まれStorybook
ます。Modern.js
Modern.js Doc
2. 特長
-
アドバンテージ
-
起動速度:
Rust
実装に基づくと、ビルド速度は非常に高速です。 -
HMR
(ホット アップデート): 組み込みの増分コンパイル メカニズムはHMR
非常に高速で、大規模なプロジェクトの開発に完全に対応します。 -
互換性のある
webpack
エコロジー:webpack
のアーキテクチャとエコロジーと互換性があり、エコロジーを最初から構築する必要はありません。 -
組み込みの共通ビルド機能:
TypeScript
、JSX
、CSS
、CSS Modules
などのSass
すぐに使えるサポートを提供します。 -
Tree Shaking
デフォルトの運用最適化: デフォルトでは、 、代码压缩
などのさまざまな最適化戦略が組み込まれています。 -
Build
パフォーマンス:5~10
コンパイルのパフォーマンスが 100% 向上しました。 -
…
-
-
欠点がある
-
Loader
サポートが限定されているPlugin
現状では主に組み込みに依存している 高度なポイントの使用が面倒かサポートが限定されている 組み込み後の設定は比較的簡単 -
より大規模なプロジェクトに適しており、実行速度と速度はの1 倍を
Build
維持できますが、小規模および中規模のプロジェクトの改善は限定的です。webpack
5-10
-
nodejs 14
上記のプロジェクトの移行のみがサポートされています。 -
…
-
3. 性能比較
-
ツールの比較
-
Byte 内部プロジェクト移行後の利点
4. アーキテクチャ設計
-
4
アスペクト周りを中心に構造図付き-
コアアーキテクチャは以下から生まれました。
Wabpack5
Wabpack
長年にわたってテストされているため、全体的な構造の安定性は非常に高いです。 -
Native
言語ベースの高同時実行フレームワークRust
これは、それ自体が言語ですNative
。この動的言語と比較するとJS
、高度に最適化でき、より高いパフォーマンスのボトルネックがあります。JS
この言語はV8
、いくつかの最適化ではすでに優れていますが、その欠点はマルチスレッドのサポートにあり、マルチスレッドの実装によってもたらされる利点ははるかに低いですRust
。 -
Rust
代替Babel
品に基づいてSWC
Webpack
エコロジーのほとんどはLoader
と のPlugin
拡張に基づいています。主な点は、Loader
従来のツールを使用してBabel Loader
実行することですがBabel Loader
、比較的遅いため、代わりにRust
使用されます。 によるパフォーマンスの向上と比較して、比較的高い貢献をしているため、開発中に の使用を回避できます。SWC
SWC
Babel
Rspack
Babel Loader
-
とに
NAPI-RS
基づいた効率的なコミュニケーションRust
JS
コアは
Rust
で書かれていますが、プラグイン拡張は で書かれています。一方で、一部の開発者はプラグイン開発を学ぶ必要JS
があり、開始コストが比較的高くなります。それはより困難です。クロスプラットフォーム プログラミングの知識全体に精通している必要があります。各プラグインは多くのプラットフォームの製品をコンパイルし、それらを異なるプラットフォームに配布する必要がある場合があります。このしきい値は比較的高く、安定性を制御するのは簡単ではありません。Rust
JS
Rust
Native
JS
Rust
Native Code
Native Code
操作系统
CPU
Windows
Mac
Native
-
5. 移行の原則
-
原則の 1 つは、最適なパフォーマンスを確保できる組み込み機能の使用を優先することです。たとえば、関連する機能は使用しないでください。よく使用される機能は基本的に組み込みです。使用する必要がある場合は、影響を狭い範囲に制御する必要があります。それらを大規模に使用すると、パフォーマンスの低下の可能性がより顕著に
Babel Loader
なりBabel
ますRspack
。 -
css
関連して、webpack
これは通常style-loader、css-loader
処理に使用されますが、をRspack
使用しSWC
て実装され、デフォルトで有効になっているため、これらの を使用する代わりにexperiments.css
組み込み機能を使用することをお勧めします。css
Loader
-
リソースモジュールは
Asset Modules
処理に使用することを推奨しており、以前のリソースなどを置き換えるためwebpack5
にも使用します。Asset Modules
file-loader、url-loader、raw-loader
-
html
Rust
この世代もプラグインの組み込みバージョンですが、機能が少し弱い可能性があります。html
レベルでのカスタマイズ要件が比較的高い場合は、それを使用できます@rspack/plugin-html
。これはバージョンです。JS
パフォーマンスはRust
バージョンより遅くなりますが、拡張機能は高くなっています。
QA
-
Vite
どちらがRspack
良いでしょうか?これはシナリオによって異なりますが、
Vite
中小規模のシナリオの開発エクスペリエンスとエコロジーは優れています。たとえば、いくつかのSSR
サポートがあれば、Rspack
現時点では負荷の高いアプリケーション (企業内など庞大的B端应用
) により適しており、コンパイル速度を5-10
3 倍に高めることができます。 -
現段階では移行が推奨されますか
Rspack
?これは、高度な機能やプラグインを使用しているかどうかによって異なります。現段階ではサポートされていない可能性があります。サポート状況を確認する必要があります。つまり、深いカスタマイズや操作がなければ、大きな問題はないと考えられますので、試してみてください
webpack
。