diff --git a/CHANGELOG.md b/CHANGELOG.md index e4ab2e523fa..f11c9077400 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # rollup changelog +## 2.0.6 +*2020-03-13* + +### Bug Fixes +* Do not use file names from different outputs when generating sourcemaps using the `dir` option (#3440) + +### Pull Requests +* [#3440](https://github.com/rollup/rollup/pull/3440): Use correct file names when writing sourcemaps for multiple outputs (@lukastaegert) + ## 2.0.5 *2020-03-12* diff --git a/docs/05-plugin-development.md b/docs/05-plugin-development.md index 0ae2b48fb7f..51544787d48 100644 --- a/docs/05-plugin-development.md +++ b/docs/05-plugin-development.md @@ -413,7 +413,7 @@ resolveImportMeta(property, {moduleId}) { Note that since this hook has access to the filename of the current chunk, its return value will not be considered when generating the hash of this chunk. #### `writeBundle` -Type: `( bundle: { [fileName: string]: AssetInfo | ChunkInfo }) => void`
+Type: `(options: OutputOptions, bundle: { [fileName: string]: AssetInfo | ChunkInfo }) => void`
Kind: `async, parallel`
Previous Hook: [`generateBundle`](guide/en/#generatebundle)
Next Hook: If it is called, this is the last hook of the output generation phase and may again be followed by [`outputOptions`](guide/en/#outputoptions) if another output is generated. diff --git a/package-lock.json b/package-lock.json index 742a10ad83a..405683a6844 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rollup", - "version": "2.0.5", + "version": "2.0.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bdc7936a829..44e415d1394 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup", - "version": "2.0.5", + "version": "2.0.6", "description": "Next-generation ES module bundler", "main": "dist/rollup.js", "module": "dist/es/rollup.js", diff --git a/src/Chunk.ts b/src/Chunk.ts index ecd64cbc207..4c126ef256e 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -509,6 +509,7 @@ export default class Chunk { ) { timeStart('render format', 3); + const chunkId = this.id!; const format = options.format as string; const finalise = finalisers[format]; if (options.dynamicImportFunction && format !== 'es') { @@ -602,12 +603,12 @@ export default class Chunk { let file: string; if (options.file) file = resolve(options.sourcemapFile || options.file); - else if (options.dir) file = resolve(options.dir, this.id!); - else file = resolve(this.id!); + else if (options.dir) file = resolve(options.dir, chunkId); + else file = resolve(chunkId); const decodedMap = magicString.generateDecodedMap({}); map = collapseSourcemaps( - this, + this.graph, file, decodedMap, this.usedModules, diff --git a/src/utils/collapseSourcemaps.ts b/src/utils/collapseSourcemaps.ts index 8e310f7362a..b347bcde603 100644 --- a/src/utils/collapseSourcemaps.ts +++ b/src/utils/collapseSourcemaps.ts @@ -1,5 +1,4 @@ import { DecodedSourceMap, SourceMap } from 'magic-string'; -import Chunk from '../Chunk'; import Graph from '../Graph'; import Module from '../Module'; import { @@ -200,14 +199,14 @@ function getCollapsedSourcemap( } export function collapseSourcemaps( - bundle: Chunk, + graph: Graph, file: string, map: DecodedSourceMap, modules: Module[], bundleSourcemapChain: DecodedSourceMapOrMissing[], excludeContent: boolean | undefined ) { - const linkMap = getLinkMap(bundle.graph); + const linkMap = getLinkMap(graph); const moduleSources = modules .filter(module => !module.excludeFromSourcemap) .map(module => diff --git a/test/cli/samples/config-multiple-source-maps/_config.js b/test/cli/samples/config-multiple-source-maps/_config.js new file mode 100644 index 00000000000..a91d466ccdc --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: 'correctly generates sourcemaps for multiple outputs', + command: 'rollup -c' +}; diff --git a/test/cli/samples/config-multiple-source-maps/_expected/main-cjs.js b/test/cli/samples/config-multiple-source-maps/_expected/main-cjs.js new file mode 100644 index 00000000000..a93f480e14c --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/_expected/main-cjs.js @@ -0,0 +1,4 @@ +'use strict'; + +assert.equal( ANSWER, 42 ); +//# sourceMappingURL=main-cjs.js.map diff --git a/test/cli/samples/config-multiple-source-maps/_expected/main-cjs.js.map b/test/cli/samples/config-multiple-source-maps/_expected/main-cjs.js.map new file mode 100644 index 00000000000..086c5841cee --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/_expected/main-cjs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main-cjs.js","sources":["../main.js"],"sourcesContent":["assert.equal( ANSWER, 42 );\n"],"names":[],"mappings":";;AAAA,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE"} \ No newline at end of file diff --git a/test/cli/samples/config-multiple-source-maps/_expected/main-es.js b/test/cli/samples/config-multiple-source-maps/_expected/main-es.js new file mode 100644 index 00000000000..8d97b6cf48d --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/_expected/main-es.js @@ -0,0 +1,2 @@ +assert.equal( ANSWER, 42 ); +//# sourceMappingURL=main-es.js.map diff --git a/test/cli/samples/config-multiple-source-maps/_expected/main-es.js.map b/test/cli/samples/config-multiple-source-maps/_expected/main-es.js.map new file mode 100644 index 00000000000..931e92a9cde --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/_expected/main-es.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main-es.js","sources":["../main.js"],"sourcesContent":["assert.equal( ANSWER, 42 );\n"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE"} \ No newline at end of file diff --git a/test/cli/samples/config-multiple-source-maps/main.js b/test/cli/samples/config-multiple-source-maps/main.js new file mode 100644 index 00000000000..df16c1b06b9 --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/main.js @@ -0,0 +1 @@ +assert.equal( ANSWER, 42 ); diff --git a/test/cli/samples/config-multiple-source-maps/rollup.config.js b/test/cli/samples/config-multiple-source-maps/rollup.config.js new file mode 100644 index 00000000000..db2092f239e --- /dev/null +++ b/test/cli/samples/config-multiple-source-maps/rollup.config.js @@ -0,0 +1,17 @@ +export default { + input: 'main.js', + output: [ + { + format: 'cjs', + dir: '_actual', + entryFileNames: '[name]-[format].js', + sourcemap: true, + }, + { + format: 'es', + dir: '_actual', + entryFileNames: '[name]-[format].js', + sourcemap: true + } + ] +};