Wiring up existing source maps of transpiled codes#692
Wiring up existing source maps of transpiled codes#692netj wants to merge 2 commits intorequirejs:masterfrom
Conversation
When `generateSourceMaps` option is enabled, r.js now detects if the module to be concatenated already declares a source map. It tries to load the existing source map, and translates line numbers of all mappings in that source map to those of the final output. This fixes most of requirejs#470, and works well as long as `optimize` option is set to `none`. Some work still remains to pass a correct `--in-source-map` option to UglifyJS when also uglifying. Currently, UglifyJS ignores r.js's carefully generated source map producing a bogus one if `optimize` option is set to `uglify2`. Used https://github.com/lydell/source-map-url (v0.2.0) for detecting sourceMappingURL= comments from the code.
|
It seems the issue with However, interestingly, when I uglify not only the final code from r.js but also require.js into a single file keeping other source map options exactly the same as before, a correct source map is generated, and I can see line numbers in .coffee files from my browser. (Caveat: tested only with WebKit) After a look into the code, r.js' implementation of the interaction with UglifyJS2 (optimize.js) appears to be pretty complete to me. So I'm suspecting this could be due to a bug in UglifyJS. For example, UglifyJS could be dropping many mappings from the given inSourceMap, as it preserves only some mappings of inSourceMap for the lines/columns that were selectively asked during output. |
|
Would this make Typescript files source map all the way back to typescripted code even after bundling with r.js, as long as optimize is set to none? |
When
generateSourceMapsoption is enabled, r.js now detects if the module to be concatenated already declares a source map. It tries to load the existing source map, and translates line numbers of all mappings in that source map to those of the final output.This fixes most of #470, and works well as long as
optimizeoption is set tonone. Some work still remains to pass a correct--in-source-mapoption to UglifyJS when also uglifying. Currently, UglifyJS ignores r.js's carefully generated source map producing a bogus one ifoptimizeoption is set touglify2.Used https://github.com/lydell/source-map-url (v0.2.0) for detecting sourceMappingURL= comments from the code.