Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a way to universally disable sourcemaps #9825

Open
4 tasks done
ascott18 opened this issue Aug 24, 2022 · 5 comments
Open
4 tasks done

Add a way to universally disable sourcemaps #9825

ascott18 opened this issue Aug 24, 2022 · 5 comments

Comments

@ascott18
Copy link

Description

Since vite produces modern javascript, sourcemaps in development are often unnecessary as there is no significant transpilation that would make debugging difficult without them.

On the other hand, sourcemaps are notoriously difficult to get correct, and if they're ever wrong then it can ruin the whole debugging experience.

While they can be turned off for individual components of vite (e.g. esbuild.sourcemap and css.devSourcemap), the dev server will still unconditionally inject sourcemaps from any plugin that produces them (like vite-plugin-vue2).

Suggested solution

Add a setting server.sourcemap that can be set to false to prevent the automatic injection of sourcemaps that happens here

if (map && map.mappings) {
if (type === 'js' || type === 'css') {
content = getCodeWithSourcemap(type, content.toString(), map)
}
}
.

Or, a bit more ambitiously, add a top level sourcemap setting that, if set, would supercede build.sourcemap, esbuild.sourcemap, build.rollupOptions.output.sourcemap* and css.devSourcemap. I realize that individual plugins could still inject their own inline sourcemaps into their emitted code, but having a single central setting for this would also encourage plugin authors to respect this setting.

Alternative

Disabling sourcemaps in the browser dev tools can achieve this end, but this has a few problems:

  • Is a per-machine setting, so while one project might not benefit from sourcemaps, another project might still need them, requiring repeated toggling through context switches.
  • Is a per-machine setting, so if it is known that the sourcemaps for a particular project are problematic, they cannot be turned off for all developers on that project.

Additional context

This would likely allow users to overcome (not a fix, but at least allow for a workaround) for the following issues:

Validations

@silverwind
Copy link

silverwind commented Sep 26, 2023

Or, a bit more ambitiously, add a top level sourcemap setting that, if set, would supercede build.sourcemap, esbuild.sourcemap, build.rollupOptions.output.sourcemap* and css.devSourcemap

A single top-level sourcemap option to control all emitted source maps would be nice. Similar to Webpack's SourceMapDevToolPlugin which fulfills the same purpose there.

I'm especially hoping for a option to exclude assets by path regexp from emitting a source map, so that for example third-party chunks can be excluded.

@worstpractice
Copy link

I second this use case.

I was surprised to find the proposed setting didn't already exist in some form.

@Kagami
Copy link

Kagami commented Nov 19, 2023

Basically you can't stop vite from changing your source JS files, in dev mode. And in production mode you have to constantly rebuild because vite build won't.
So the better option is to use tsc -w and python -m http.server if you want your files intact...

@bhanuc
Copy link

bhanuc commented Sep 30, 2024

I also need to disable it. Did anyone find a way to do this in the dev server ?

@sapphi-red
Copy link
Member

You can achieve this by adding a plugin.

import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    {
      name: 'remove-sourcemaps',
      transform(code) {
        return {
          code,
          map: { mappings: '' }
        }
      }
    }
  ]
})

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants
@silverwind @Kagami @bhanuc @ascott18 @sapphi-red @worstpractice and others