Reconciling ASP.NET script bundles and source maps
Asked Answered
G

2

43

Is there any way to set up the default System.Web.Optimization.ScriptBundle to generate source maps for the bundled and minified files? Is there an equivalent solution, other than having to pre-generate the bundles and source maps before each build?

Glossy answered 6/12, 2013 at 18:27 Comment(3)
Have you found the solution?Flush
I haven't found a ready-made solution yet. Once I have some free time, I'll see if I can write something myself; I'll post an answer then.Glossy
If you have VS 2013, you can use the new Task Explorer VSIX plugin. Read about one approach here. I'm considering getting gulp working without the plugin in VS2012 as an option. The main pain point is getting node.js, NPM, etc. all set up on my CI servers.Hauge
G
22

It looks like in the meantime some kind soul has released a custom class that does exactly what I need.

You can get his source at https://github.com/benmccallum/AspNetBundling.

Glossy answered 11/8, 2014 at 20:17 Comment(2)
What @Kurt said is simply untrue. In any means, I've updated the github repo to include a test website. I encourage him to clone the repo, attach a debugger into the ScriptWithSourceMapBundleBuilder.BuildBundleContent(...) method and see that the WebOptimization framework only calls IBundleBuilder.BuildBundleContent once on first request of contents, at which time I also generate the .map file.Sandglass
You can now get the source from the below NuGet package nuget.org/packages/AspNetBundlingTrisa
B
6

Nothing built in yet, although I wish it was. That being said, if you don't have to use the built in optimizer you could opt for Web essentials found here and use it to create bundles with map files for you. These bundles are kept up to date as you save changes to the source js files so you would not need to recreate the bundles per build.

Right click on any script file once web essentials is installed, select the web essentials option at the top of the context menu, and select minify javascript file. Alternatively you can select multiple javascript files and use web essentials to create a bundle in the same fashion.

Beuthen answered 28/2, 2014 at 16:7 Comment(3)
Using ScriptBundle will create a /bundles directory and auto append a random GUID so the browser knows this is a new bundle version and the cache is circumvented. Web Essentials does not support cache busting, correct?Analiese
Unfortunately, I couldn't tell you now as I've moved onto another project in rails. We were using varnish for our caching solution so we didn't run into the issue as we could bust the cache on demand. I don't recall if web essentials was using some kind of guid to bust the cache for you or not....Beuthen
It appears Mads (the author of Web Essentials) wrote this solution for cache busting.Analiese

© 2022 - 2024 — McMap. All rights reserved.