developit / developit/microbundle

Add `x_google_ignoreList` (Ignore-listing code) support to sourcemaps

オープン
#1,066 コメント 9 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
JavaScript
スター
8.1k
フォーク
358
PR マージ指標
30日以内にマージされた PR はありません

説明

Introduce the `x_google_ignoreList` extension in the sourcemaps generated by this project. This will facilitate a more streamlined debugging experience in Chrome (and other supporting browsers) by automatically filtering out framework and dependency code.

## Benefit

Implementing `x_google_ignoreList` in the sourcemaps will align this project with modern web development practices, offering a more focused and efficient debugging experience for developers using Chrome DevTools. This change will particularly benefit those who regularly engage in debugging complex applications with numerous dependencies.

## Background Context

- https://developer.chrome.com/blog/devtools-modern-web-debugging/#just-my-code
- > The ignore-listing is enabled by populating an extra `x_google_ignoreList` field in the source map that Angular generates when compiling the project. The Chrome DevTools team encourages other framework authors to implement a similar change. Refer to the [Case Study: Better Angular Debugging with DevTools](https://developer.chrome.com/blog/devtools-better-angular-debugging/) post for more details.
- https://developer.chrome.com/blog/devtools-better-angular-debugging/#ignore-listing-code
- > **Ignore-listing code**
> When debugging applications using Chrome DevTools, authors generally only want to see just their code, not that of the framework underneath or some dependency tucked away in the node_modules folder.
>
> To achieve this, the DevTools team has introduced an extension to [source maps](https://developer.chrome.com/blog/sourcemaps/), called `x_google_ignoreList`. This extension is used to identify third-party sources such as framework code or bundler-generated code. When a framework uses this extension, authors now automatically avoid code that they don't want to see or step through without having to manually configure this beforehand.
>
> The `x_google_ignoreList` source map extension is supported by Chrome DevTools starting with Chrome 106.
- https://developer.chrome.com/articles/x-google-ignore-list/
- > The ignoreList source map extension
>
> Improve debugging experience in Chrome DevTools with the `ignoreList` source map extension.

> - https://developer.chrome.com/blog/new-in-devtools-120/#ignore-list-spec
> - > The [source maps specification](https://sourcemaps.info/spec.html) has [adopted](https://github.com/tc39/source-map-spec/pull/19) the `ignoreList` field instead of `x_google_ignoreList` and DevTools now supports the new name with a fallback for the old one. Frameworks and bundlers can now use the new field name.
>
> _Originally posted by @0xdevalias in https://github.com/facebook/react/issues/27774#issuecomment-1836969520_

- https://tc39.es/source-map-spec/#ignorelist

## See Also

- https://github.com/facebook/react/issues/27774
- https://github.com/markerikson/react-prod-sourcemaps/issues/19
- https://github.com/vercel/next.js/issues/41370
- https://github.com/vercel/next.js/discussions/41371
- https://github.com/vuejs/rfcs/discussions/607
- https://github.com/sveltejs/svelte/issues/9740
- https://github.com/angular/angular-cli/pull/23545
- https://nuxt.com/blog/v3-3#better-logging-in-browser-devtools
- https://github.com/nuxt/nuxt/pull/19243
- https://vitejs.dev/config/server-options.html#server-sourcemapignorelist
- https://github.com/vitejs/vite/pull/12174
- https://github.com/vitejs/vite/pull/12633
- https://github.com/vitejs/vite/pull/12694
- https://rollupjs.org/configuration-options/#output-sourcemapignorelist
- https://github.com/rollup/rollup/issues/4847
- https://github.com/rollup/rollup/pull/4846
- https://github.com/rollup/rollup/pull/4848
- https://github.com/rollup/rollup/pull/4926
- https://github.com/Rich-Harris/magic-string/issues/241
- https://github.com/Rich-Harris/magic-string/pull/240
- https://github.com/Rich-Harris/magic-string/pull/243

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

この issue ではファイル、テスト、エントリポイントが指定されていません。まず、microbundle が sourcemap の生成を Rollup に委譲する流れを追跡し、次に生成された map を source-map ignoreList specification と比較してください。生成された sourcemap が、要求された ignore-list フィールドを通じて framework または dependency のソースを識別し、関連する出力パスをカバーできれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript, rollup
領域
build-system
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。