Skip to content

Inline vs. External Source Maps Behave Differently Since Version 0.25.0 #4105

@alan-agius4

Description

@alan-agius4

Starting from version 0.25.0, an inline source map produces a different output compared to an external source map.

Example: Inline Source Map (Incorrect)

const foo = 'foo';

export { foo };

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb28iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy92aWV3ZXIvc3JjL3B1YmxpYy1hcGkudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy92aWV3ZXIvc3JjL3ZpZXdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZm9vID0gJ2Zvbyc7XG4iLCIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBZ0I7O0FDQW5COztBQUVHIiwiaWdub3JlTGlzdCI6W119

Output:

{
  "version": 3,
  "sources": [
    "../../../../projects/viewer/src/public-api.ts",
    "../../../../projects/viewer/src/viewer.ts",
    "src/main.js"
  ],
  "sourcesContent": [
    "export const foo = 'foo';\n",
    "/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n",
    "import { foo } from 'viewer';\nconsole.log(foo);"
  ],
  "mappings": ";AAAA,IAAMA,MAAmB;;;AECzB,QAAQ,IAAI,GAAG;",
  "names": ["foo"]
}

Example: External Source Map (Correct)

const foo = 'foo';

export { foo };

//# sourceMappingURL=viewer.mjs.map

Output:

{
  "version": 3,
  "sources": [
    "projects/viewer/src/public-api.ts",
    "projects/viewer/src/viewer.ts",
    "src/main.js"
  ],
  "sourcesContent": [
    "export const foo = 'foo';\n",
    "/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n",
    "import { foo } from 'viewer';\nconsole.log(foo);"
  ],
  "mappings": ";AAAA,IAAMA,MAAmB;;;AECzB,QAAQ,IAAI,GAAG;",
  "names": ["foo"]
}

Reproduction: https://esbuild.github.io/try/#YgAwLjI1LjAAewogIGFic1dvcmtpbmdEaXI6ICcvJywKICBmb3JtYXQ6ICdlc20nLAogIGJ1bmRsZTogdHJ1ZSwKICBwYWNrYWdlczogJ2J1bmRsZScsCiAgc291cmNlbWFwOiAnZXh0ZXJuYWwnLAogIG91dGRpcjogJy8nLAp9AGUAL3NyYy9tYWluLmpzAGltcG9ydCB7IGZvbyB9IGZyb20gJ3ZpZXdlcic7CmNvbnNvbGUubG9nKGZvbyk7AABub2RlX21vZHVsZXMvdmlld2VyL2Zlc20vdmlld2VyLm1qcwBjb25zdCBmb28gPSAnZm9vJzsKCmV4cG9ydCB7IGZvbyB9OwoKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKdVlXMWxjeUk2V3lKbWIyOGlYU3dpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXdjbTlxWldOMGN5OTJhV1YzWlhJdmMzSmpMM0IxWW14cFl5MWhjR2t1ZEhNaUxDSXVMaTh1TGk4dUxpOHVMaTl3Y205cVpXTjBjeTkyYVdWM1pYSXZjM0pqTDNacFpYZGxjaTUwY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25RZ1kyOXVjM1FnWm05dklEMGdKMlp2YnljN1hHNGlMQ0l2S2lwY2JpQXFJRWRsYm1WeVlYUmxaQ0JpZFc1a2JHVWdhVzVrWlhndUlFUnZJRzV2ZENCbFpHbDBMbHh1SUNvdlhHNWNibVY0Y0c5eWRDQXFJR1p5YjIwZ0p5NHZjSFZpYkdsakxXRndhU2M3WEc0aVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFMUJRVTFCTEVkQlFVY3NSMEZCWjBJN08wRkRRVzVDT3p0QlFVVkhJaXdpYVdkdWIzSmxUR2x6ZENJNlcxMTkKCi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgVW5jb21tZW50IHRoZSBiZWxvdyB0byBzZWUgdGhlIGRpZmZlcmVudCBiZWhhdmlvdXIgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAKLy8gLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmlld2VyLm1qcy5tYXAAAG5vZGVfbW9kdWxlcy92aWV3ZXIvZmVzbS92aWV3ZXIubWpzLm1hcAB7CiAgInZlcnNpb24iOiAzLAogICJuYW1lcyI6IFsKICAgICJmb28iCiAgXSwKICAic291cmNlcyI6IFsKICAgICIuLi8uLi8uLi8uLi9wcm9qZWN0cy92aWV3ZXIvc3JjL3B1YmxpYy1hcGkudHMiLAogICAgIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ZpZXdlci9zcmMvdmlld2VyLnRzIgogIF0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImV4cG9ydCBjb25zdCBmb28gPSAnZm9vJztcbiIsCiAgICAiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIkFBQUEsTUFBTUEsR0FBRyxHQUFnQjs7QUNBbkI7O0FBRUciLAogICJpZ25vcmVMaXN0IjogW10KfQAAbm9kZV9tb2R1bGVzL3ZpZXdlci9wYWNrYWdlLmpzb24AewogICJuYW1lIjogInZpZXdlciIsCiAgInZlcnNpb24iOiAiMC4wLjEiLAogICJzaWRlRWZmZWN0cyI6IGZhbHNlLAogICJtb2R1bGUiOiAiZmVzbS92aWV3ZXIubWpzIgp9

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions