|
| 1 | +--- |
| 2 | +title: "2023-09-07のJS: Node.js v20.6.0(.env)、Rspackのアーキテクチャデザイン、" |
| 3 | +author: "azu" |
| 4 | +layout: post |
| 5 | +date : 2023-09-07T06:06:26.726Z |
| 6 | +category: JSer |
| 7 | +tags: |
| 8 | +- nodejs |
| 9 | +- bundler |
| 10 | +- MicroFrontend |
| 11 | +- architecture |
| 12 | +- GraphQL |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +JSer.info #659 - Node.js v20.6.0がリリースされました |
| 17 | + |
| 18 | +- [Node v20.6.0 (Current) | Node.js](https://nodejs.org/ja/blog/release/v20.6.0) |
| 19 | + |
| 20 | +`.env`をビルトインサポート、`import.meta.resolve`をフラグなしで利用できるように、`module.register()` APIの追加などが行われています。 |
| 21 | +Loaderの`load` hookがCommonJSをサポートし、非推奨の`require.extensions`を使わなくてもCommonJSを扱うcustom loaderを書けるようになるなどといった変更も含まれています。 |
| 22 | + |
| 23 | +しかし、このv20.6.0ではこのloaderの変更によりBabelなどが動かなくなっているため、v20.6.1で修正される予定です。 |
| 24 | + |
| 25 | +- [[v20.6] CJS runs repeatedly when there are circular dependencies when loaded by ESM · Issue #49497 · nodejs/node](https://github.com/nodejs/node/issues/49497) |
| 26 | +- [esm: fix loading of (recursive) CJS modules from ESM by aduh95 · Pull Request #49500 · nodejs/node](https://github.com/nodejs/node/pull/49500) |
| 27 | + |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +[Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev/wg · Discussion #1](https://github.com/web-infra-dev/wg/discussions/1)に、Rspackの開発の目的やwebpack/parcel/esbuild/rollupなどのbundlerのアーキテクチャについて書かれています。 |
| 32 | + |
| 33 | +それぞれのbundlerには長所と短所がありますが、出発点としてはesbuildとRollupのいいところを取り込んだRustバージョン作るところから始まった点について書かれています。 |
| 34 | +その過程でプラグインAPIやJavaScript以外の言語を扱う仕組みの必要性などから、webpackのアーキテクチャと似たものが必要なことが分かり、Rspackはwebpack互換のアーキテクチャを採用することになったことが書かれています。 |
| 35 | + |
| 36 | +それぞれのbundlerのアーキテクチャ、Rspackの現在の課題、今後の方向性などについても書かれています。 |
| 37 | + |
| 38 | +---- |
| 39 | + |
| 40 | +{% include inline-support.html %} |
| 41 | + |
| 42 | +---- |
| 43 | + |
| 44 | +<h1 class="site-genre">ヘッドライン</h1> |
| 45 | + |
| 46 | +---- |
| 47 | + |
| 48 | +## nitrogql 1.0 release | nitrogql blog |
| 49 | +[nitrogql.vercel.app/blog/release-1.0](https://nitrogql.vercel.app/blog/release-1.0 "nitrogql 1.0 release | nitrogql blog") |
| 50 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">GraphQL</span> <span class="jser-tag">Tools</span> <span class="jser-tag">Rust</span> <span class="jser-tag">nodejs</span> <span class="jser-tag">TypeScript</span> <span class="jser-tag">ReleaseNote</span></p> |
| 51 | + |
| 52 | +GraphQLからクライアントコードの生成とGraphQLのクエリの型チェック行うnitrogql 1.0リリース。 |
| 53 | + |
| 54 | + |
| 55 | +---- |
| 56 | + |
| 57 | +## Node v20.6.0 (Current) | Node.js |
| 58 | +[nodejs.org/ja/blog/release/v20.6.0](https://nodejs.org/ja/blog/release/v20.6.0 "Node v20.6.0 (Current) | Node.js") |
| 59 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">nodejs</span> <span class="jser-tag">ReleaseNote</span></p> |
| 60 | + |
| 61 | +Node.js v20.6.0リリース。 |
| 62 | +`.env`をビルトインサポート、`import.meta.resolve`をフラグなしで利用できるように、`module.register()` APIの追加。 |
| 63 | +Loaderの`load` hookがCommonJSをサポートし、非推奨の`require.extensions`を使わなくてもCommonJSを扱うcustom loaderを書けるようになるなど |
| 64 | + |
| 65 | + |
| 66 | +---- |
| 67 | + |
| 68 | +## Release v4.0.0 · actions/checkout |
| 69 | +[github.com/actions/checkout/releases/tag/v4.0.0](https://github.com/actions/checkout/releases/tag/v4.0.0 "Release v4.0.0 · actions/checkout") |
| 70 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">Github</span> <span class="jser-tag">Actions</span> <span class="jser-tag">nodejs</span> <span class="jser-tag">ReleaseNote</span></p> |
| 71 | + |
| 72 | +actions/checkout v4.0.0リリース。 |
| 73 | +Node.js 20を利用するように、`show-progress`オプションを追加など |
| 74 | + |
| 75 | + |
| 76 | +---- |
| 77 | +<h1 class="site-genre">アーティクル</h1> |
| 78 | + |
| 79 | +---- |
| 80 | + |
| 81 | +## Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev/wg · Discussion #1 |
| 82 | +[github.com/web-infra-dev/wg/discussions/1](https://github.com/web-infra-dev/wg/discussions/1 "Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev/wg · Discussion #1") |
| 83 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">bundler</span> <span class="jser-tag">article</span> <span class="jser-tag">architecture</span></p> |
| 84 | + |
| 85 | +Rspackの開発の目的やwebpack/parcel/esbuild/rollupなどのbundlerのアーキテクチャについて。 |
| 86 | +webpackにはデバッグやパフォーマンスの問題があり、Vite/Rollupも大規模プロジェクトではパフォーマンスにビルド環境の差異の問題があり、esbuildはプラグインの柔軟性に問題がある。 |
| 87 | +RollupはESMのみが第一級市民であり、RspackはwebpackとParcelと同じく言語に依存しないことを目的にしている。 |
| 88 | +それぞれのbundlerのプラグインAPIの設計と複雑性、ASTの再利用とパフォーマンスの問題、Tree ShakingをASTベースで行った場合の課題について。 |
| 89 | +また、今後のRspackが目指す方向して簡単に使えるようにすること、デバッグをしやすくすること、最適化をwebpackと同等以上にすること、リモートキャッシュなどについて触れている。 |
| 90 | + |
| 91 | + |
| 92 | +---- |
| 93 | + |
| 94 | +## Mofi - Snappy UIs With WebAssembly and Web Workers |
| 95 | +[mofi.loud.red/blog/wasm-and-workers](https://mofi.loud.red/blog/wasm-and-workers "Mofi - Snappy UIs With WebAssembly and Web Workers") |
| 96 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">WebAssembly</span> <span class="jser-tag">webworker</span> <span class="jser-tag">article</span> <span class="jser-tag">JavaScript</span></p> |
| 97 | + |
| 98 | +WebAssemblyでの処理をWebWorkerの中で動かし、メインスレッドをブロックせずに処理を行うという話。 |
| 99 | +CPUのコア数を超えてWorkerを増やすと問題があるため、ワーカープールを作成しWorker数を制御している。またWorkerから進捗状況をメッセージングする方法についてなど |
| 100 | + |
| 101 | + |
| 102 | +---- |
| 103 | + |
| 104 | +## Faster Vue.js Execution in Firefox - Mozilla Hacks - the Web developer blog |
| 105 | +[hacks.mozilla.org/2023/09/faster-vue-js-execution-in-firefox/](https://hacks.mozilla.org/2023/09/faster-vue-js-execution-in-firefox/ "Faster Vue.js Execution in Firefox - Mozilla Hacks - the Web developer blog") |
| 106 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">Firefox</span> <span class="jser-tag">JavaScript</span> <span class="jser-tag">performance</span> <span class="jser-tag">article</span></p> |
| 107 | + |
| 108 | +Vueなどが使うProxyの最適化を行うことで、TodoMVC-Vuewのパフォーマンスが40%改善される。 |
| 109 | +Firefox 118のリリースにこの変更が含まれる予定。 |
| 110 | + |
| 111 | + |
| 112 | +---- |
| 113 | + |
| 114 | +## How we reduced the size of our JavaScript bundles by 33% - Dropbox |
| 115 | +[dropbox.tech/frontend/how-we-reduced-the-size-of-our-javascript-bundles-by-33-percent](https://dropbox.tech/frontend/how-we-reduced-the-size-of-our-javascript-bundles-by-33-percent "How we reduced the size of our JavaScript bundles by 33% - Dropbox") |
| 116 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">bundler</span> <span class="jser-tag">article</span></p> |
| 117 | + |
| 118 | +Rollupを使ってCode Splitting/Tree Shakingを行うことでbundleサイズを小さくしたという話。 |
| 119 | +一方でRollupはメモリ上に全てのコードを持つためCIのビルドが不安定になった点、細かいchunkだと圧縮効率があまりよくなかった点についてなど |
| 120 | + |
| 121 | + |
| 122 | +---- |
| 123 | +<h1 class="site-genre">サイト、サービス、ドキュメント</h1> |
| 124 | + |
| 125 | +---- |
| 126 | + |
| 127 | +## Modern.js |
| 128 | +[modernjs.dev/en](https://modernjs.dev/en "Modern.js") |
| 129 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">library</span> <span class="jser-tag">MicroFrontend</span></p> |
| 130 | + |
| 131 | +ByteDanceのJavaScript向けのウェブアプリケーションフレームワーク。 |
| 132 | +Reactをベースにしたクライアントサイド向けのモデルやルーティング、Rspack/ESLint/Jestなどの統合、BFFのサポート、MicroFrontendのサポートなどをしている。 |
| 133 | + |
| 134 | + |
| 135 | +---- |
| 136 | +<h1 class="site-genre">ソフトウェア、ツール、ライブラリ関係</h1> |
| 137 | + |
| 138 | +---- |
| 139 | + |
| 140 | +## measuredco/puck: The self-hosted drag and drop editor for React. |
| 141 | +[github.com/measuredco/puck](https://github.com/measuredco/puck "measuredco/puck: The self-hosted drag and drop editor for React.") |
| 142 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">editor </span> <span class="jser-tag">library</span></p> |
| 143 | + |
| 144 | +D&Dで編集できるビジュアルエディタのReactコンポーネントライブラリ |
| 145 | + |
| 146 | + |
| 147 | +---- |
| 148 | +<h1 class="site-genre">書籍関係</h1> |
| 149 | + |
| 150 | +---- |
| 151 | + |
| 152 | +## Nuxt 3 フロントエンド開発の教科書:書籍案内|技術評論社 |
| 153 | +[gihyo.jp/book/2023/978-4-297-13685-7](https://gihyo.jp/book/2023/978-4-297-13685-7 "Nuxt 3 フロントエンド開発の教科書:書籍案内|技術評論社") |
| 154 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">Vue</span> <span class="jser-tag">library</span> <span class="jser-tag">book</span></p> |
| 155 | + |
| 156 | +2023年9月22日発売 |
| 157 | +Nuxtについての書籍 |
| 158 | + |
| 159 | + |
| 160 | +---- |
0 commit comments