Mat*_*son 5 asp.net bundling-and-minification
我使用ASP.NET的捆绑和缩小功能设置了一个简单的测试.我有两个非常简单的js文件:
〜/ JS/Site.js
(function echo1() {
alert("this is site.js");
})();
Run Code Online (Sandbox Code Playgroud)
〜/ JS/test.js
(function echo2(value) {
alert("and this is test.js");
})();
Run Code Online (Sandbox Code Playgroud)
我创建了一个包如下:
bundles.Add(new ScriptBundle("~/bundles/scripts/site-globals").Include(
"~/JS/Site.js",
"~/JS/test.js"));
Run Code Online (Sandbox Code Playgroud)
并使用.引用页面上的包 @Scripts.Render("~/bundles/scripts/site-globals")
当我在调试下运行该站点(<compilation debug="true" targetFramework="4.5" />在web.config中)时,我得到了预期的结果 - 两个警告框一个接一个地显示.
但是,当我将更改运行到release(<compilation debug="false" targetFramework="4.5" />)时 - 我只看到第一个警告框,并且发送到浏览器的组合JS文件完全忽略了test.js的内容.
"合并和缩小"输出如下所示,错误地仅包含来自Site.js的代码:
(function(){alert("this is site.js")})()
Run Code Online (Sandbox Code Playgroud)
关于为什么会发生这种情况的任何想法都将非常感谢!谢谢
我发现了造成这个问题的原因.如果任何javascript文件的注释为最后一行,则它们将在没有换行符的情况下组合在一起,从而导致下一个文件的第一行被注释掉.
这是关于堆栈溢出的另一个问题的链接,它说明了这一点:https://stackoverflow.com/a/14223945/1145963 1
就我而言,我使用Web Essentials Visual Studio插件来缩小我的javascript文件.它正在为每个JS文件创建一个.js.map文件,并且在每个.min.js文件的末尾都是这样的注释行,结果导致了问题:
//@ sourceMappingURL=somefile.min.js.map
Run Code Online (Sandbox Code Playgroud)
由于我不需要映射文件,因此我关闭了此功能 Options -> Web Essentials -> Javascript -> Set Generate source maps (.map) to false
希望这可以帮助任何发现此问题的人!
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |