1719906497
2024-07-02 05:41:25
2024-06-28 作成者 ごめんなさい
中国バージョン: 「Mako はオープンソースです」。
こんにちは、Sorryccです。Makoのメインメンテナーの一人であり、Umi、Dva、Father、その他のライブラリの作者でもあります。Makoがついにオープンソースになったことをお知らせできてうれしく思います。GithubのURLは次のとおりです。 https://github.com/umijs/mako/ 、本日正式にご紹介できることを嬉しく思います。
マコって何ですか?

Mako は、Rust をベースにした「非常に高速」かつ「本番環境対応」のフロントエンド ビルド ツールです。
「非常に高速」という側面が、私たちが Mako プロジェクトを開始した当初の動機でした。ビルド速度の問題がなければ、Mako は必要なかったでしょう。データについては、以下のベンチマーク セクションを参照してください。私たちは、さらに高速なビルド速度のソリューションを常に模索しています。「本番環境グレード」というラベルは、2023 年 11 月 24 日以降、Ant Group で Mako が正式に社内リリースされたことに由来しています。何千ものプロジェクトと、使用されているすべての npm パッケージとそのバージョンでのエンジニアリング プラクティスによって検証されています。何百ものプロジェクトに実装されており、管理バックエンド、ミニプログラム、H5 モバイル、ローコード、マーケティング、コンポーネント ライブラリ、コンポーネント パッケージング、サーバーレス関数など、さまざまなプラットフォームやビジネス シナリオに社内で対応し、完全な本番環境グレードの機能を実証しています。
訪問することができます https://makojs.dev/docs/features Mako の機能について詳しく知るには。
マコはどうやって生まれたのですか?
昨年(2023.3)、私たちのチームはRust、SSR、AIGの3つのプロジェクトを立ち上げ、ビルドパフォーマンスの問題に取り組むためにRustの方向性を採用しました。私たちのチームは、ビルド速度を高速化するソリューションを模索してきました。 MFSUは、Webpack 内でビルド速度を最適化します。しかし、これには一定の制限がありました。そこで、Rust を通じて徹底的な解決策を模索しました。

なぜ既存の Rust ツールを使わずに自分たちで作成することにしたのか不思議に思うかもしれません。理由は複雑です。たとえば、1) コミュニティ ライブラリの成熟度と Ant のニーズとの互換性。開始前にコミュニティの Rust ビルド ソリューションをすべて調査し、最終的に独自のものを作成することに決めました。2) 制御権を持つこと。ビジネス上の理由から、Ant のビルド ツールには多くのカスタマイズが必要であり、社内リリース後に一致するニーズが多数見つかったため、これは事実であることが証明されました。3) 最新のメタフレームワークにはコンパイル時のフレームワークが必要であり、ビルドに加えて、特に SSR および RSC シナリオでは多くのコンパイルのニーズがあります。たとえば、RSC シナリオでは社内で 4 回のビルドが必要でした。4) Rust を学習する必要があり、チームの成長のために、最新のフロントエンド ツールはすべて Rust で記述されているため、進歩しなければ遅れをとることになります。

上記のタイムラインは Mako のものです。Mako は 2023.3 に開始され、2023.7 までに最初の使用可能なバージョンがリリースされ、2023.11 に Ant で内部リリースされ、2024.6 までにオープンソース化されました。当初は Rust の経験がまったくないメンバーが 3 人いて、チーム メンバー、特に仮想チームが入れ替わり立ち替わり、ビルドの知識を消化しながら Rust を学び、Mako に取り組むのは大変でしたが、幸運にも成功し、その過程で多くのことを学びました。Webpack、Farm、Rspack などのビルド分野の先駆者、および ChatGPT に感謝したいと思います。
スピード
Mako は速度に多大な努力を注いでいます。以下はベンチマーク データです。

ベンチマークは、Turbopack もテストするプロジェクトで、Mac Book Pro M2 Max 上で実行されました。開発コールド スタート時間、ルート ノードとリーフ ノードの HMR 時間、本番ビルドのビルド時間、JS バンドル サイズなどのディメンションが含まれています。(注: Farm は API モードを使用して正常に試行されなかったため、HMR データは生成されませんでした。RsBuild は 0.7 へのアップグレードで問題が発生したため、今のところ 0.6 のままです。RsBuild 0.7 は少し速くなる可能性があります。)
ご興味がございましたら、リポジトリをクローンしてご自身で試してみてください。
$ git clone [email protected]:umijs/benchmark.git
$ cd benchmark
$ pnpm i
$ pnpm run setup
$ pnpm benchmark
以前の私たちと比べるとこんな感じです。

Ant Design Pro の完全なプロジェクト ビルドでは、Webpack では 16 秒、Mako では 3.9 秒かかり、速度が 4 倍向上します。

Ant Design Pro の完全なプロジェクト ビルドの場合、Mako はほぼ常にリアルタイムのホット アップデートを提供します。

RSC (React Server Components) をベースにしたイントラネット ハイブリッド フレームワーク Smallfish プロジェクト ビルドでは、スキャフォールド プロジェクトでビルド時間が 36.7 秒から 1.2 秒に短縮されました。少し誇張されているように見えますが、これは実際のデータです。

これらは、このような RSC プロジェクトにおける速度向上のさらなる例です。

さらに、Makoには以前のMFSU実装に似た実験的なSSU機能もあり、依存関係のパッケージ化とキャッシュを行います。ソースコードと依存関係の比率に応じて、開発ホットスタートアップの速度を10〜50倍向上させることができます。現在、 SSU=true 環境変数。
参加するには?
Mako を体験したい場合は、スキャフォールディング ツールを使用して 1 つのコマンドで Mako + React プロジェクトを作成できます。
$ npm create mako
Umiユーザーなら、Makoを体験するのはとても簡単です!
# Make sure your version is 4.2.0 or above
$ npx umi -v
4.2.0
# Enable Mako configuration
$ npx umi config set mako {}
# Run build or other commands
$ npx umi build
Makoに関する問題や提案を議論したい場合は、QRコードをスキャンしてWeChatグループに参加してください。(期限が切れていたり、グループがいっぱいの場合は、 https://makojs.dev/docs/フィードバック 新しいQRコードを入手してください。

または、次のリンクをクリックして、Telegram グループに参加してください。
https://t.me/+EN3fycCw3TI1NDA1
また、RSS 経由で Mako のアップデートを購読することもできます。Mako に関する最新ニュースや、構築に関連する高品質の技術記事を投稿します。
Makoのオープンソースに参加したい場合は、 https://github.com/umijs/mako そして 貢献文書 詳細については、こちらをご覧ください。バグ修正または機能 PR を送信した人は誰でも、Mako の開発者 DingTalk グループに参加できます。
もし、あなたの会社でMakoを積極的に導入したい、あるいはMakoをベースに開発したいとお考えでしたら、ぜひご連絡ください(メール送信先:[email protected])までご連絡ください。当社は、関連するトレーニング、コンサルティング、およびよりタイムリーなサポート サービスを提供できます。

ライブQ&A
今夜(2024年6月28日)午後9時、BilibiliでライブQ&Aを開催します。予約リンクはこちらです。 https://t.bilibili.com/947260122376175622どなたでもご参加いただけます。マコに関することなら何でも聞いてください。マコについて質問がある場合は、事前にアンケートにご記入ください。 https://docs.qq.com/form/page/DY2Z6VndTRXBpR1Nh。
謝辞
Mako のリリースは、各貢献者なしでは実現できませんでした。特に、ほとんどの貢献者は余暇時間に参加してくれました。ありがとうございます!
- Makoにコードを提出した人: ヘデン、 ジーシア、 メイプル0817、 迷走神経X、 チェスル、 HiLanXiao、 ジャック・グイヤン12、 ジャンパンウェブ、 ctts、 グーイ、 なんで?
- Makoの開発に今も積極的に参加してくださっている方々: ピーチスクリプト、 嵐ゆっくり、 xusd320、 ラブプレイコード、 ジンバオ1001、 ごめんなさい
- 初期段階で Mako を使用して提案を提供してくれたコミュニティ メンバー: シャオフオニ、 謝仁源
- プロジェクトの発起者: 163 …
- ロゴデザイナー: ゴレフカデザイン
- スタイリッシュなランディングページのPD、デザイナー、開発者: ぶっきらぼう、10億元、 ウークン
そして、コミュニティの依存関係ライブラリの多くの作者!
- ウェブパック、それはマコに多くのアイデアを与えました。
- swc による @とき1、これは Mako の解析、変換、コード生成を強化しました。
- 農場 による @brightwu、これは Mako のツリー シェイキング、プラグイン システムなどに影響を与えました。
- rspack、それがマコの木を揺らすきっかけとなった。
- oxc リゾルバ による @ボシェン マコのリゾルバに動力を与えた。
- オックスc による @ボシェン そこから、Rust で効率的に開発する方法について多くのことを学びました。
- バイオーム による @ematipico そこから、Rust で効率的に開発する方法について多くのことを学びました。
#Mako #がオープンソースになりました