developit / developit/microbundle
Add `x_google_ignoreList` (Ignore-listing code) support to sourcemaps
- Dominant language
- JavaScript
- Stars
- 8.1k
- Forks
- 358
- PR merge metrics
- No merged PRs in 30d
Description
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
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.