And*_*rew 19 bower gulp asp.net-core
自从我使用ASP.NET 5以来已经有一段时间了,所以我很惊讶,现在默认将bower组件放在wwwroot\lib文件夹中.这是因为.bowerrc文件:
{
"directory": "wwwroot/lib"
}
Run Code Online (Sandbox Code Playgroud)
在早期版本中,bower组件存储在./bower_components文件夹中,这对我来说仍然更有意义.
我希望我需要一个gulp/grunt(使用wiredep)任务来构建并将我的JavaScript和CSS文件复制到wwwroot文件夹中.
很明显我错过了一些东西,但我无法理解它或找到关于此事的任何合适的信息.
为什么我需要在`wwwroot\lib'文件夹中的所有bower组件(包括源代码),特别是在部署时,以及部署我的Asp.NET 5 Web应用程序所需的工作流程是什么?
Joe*_*tte 13
我认为bower_components文件夹被放弃的原因现在使用wwwroot/lib是因为无论是dev还是生产静态文件都需要在wwwroot下面生存,否则在每次编辑文件后你需要再次运行taskrunner来复制wwwroot下面的文件.如果文件的开发和生产版本都位于wwwroot下面的某个位置,那么这是一个更高效的工作流程.这样您就可以编辑和刷新页面,而不是编辑运行taskrunner,然后刷新页面.
我建议在创建文件的缩小/处理生产版本时,将grunt流程文件放入不同的文件夹,如wwwroot/js.
然后,wwwroot/lib文件夹甚至可以从发布中排除,因为只有开发版本的库脚本才会存在.
我认为我自己的自定义脚本不是bower组件应该不在wwwroot/lib下,所以也许我把未经通知的那些放在wwwroot/dev下并处理wwwroot/js下的所有生产内容,以便在生产中我只部署wwwroot/js文件夹,其中包含生产版本缩小/组合文件.所以基本上我们就这样制作自己的捆绑包.
新的环境标记和脚本标记帮助可以轻松指向开发和生产的不同文件位置,如下例所示:
<environment names="Development">
<script src="~/lib/jquery-validation/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>
<environment names="Staging,Production">
<script src="//ajax.aspnetcdn.com/ajax/jquery.validation/1.11.1/jquery.validate.min.js"
asp-fallback-src="~/js/lib/jquery-validation/jquery.validate.js"
asp-fallback-test="window.jquery && window.jquery.validator">
</script>
<script src="//ajax.aspnetcdn.com/ajax/mvc/5.2.3/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/js/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jquery && window.jquery.validator && window.jquery.validator.unobtrusive">
</script>
</environment>
Run Code Online (Sandbox Code Playgroud)
因此,您可以轻松地在生产中使用cdn.请注意,对于非cdn文件,您不能指向除wwwroot或以下某个文件夹之外的任何位置,因此在wwwroot之外的bower_components文件夹中的文件不是您可以指向脚本的位置,因此将文件放在那里是没有意义的.
在创建自定义脚本的开发版本的脚本链接时,我喜欢使用新的taghelper属性asp-append-version ="true",它将文件内容的哈希值附加到url,确保随时绕过以前的浏览器缓存文件已编辑或更改.这种情况发生时无需运行taskrunner,我只需编辑和刷新页面.
因此总而言之,将wwwroot下面的所有脚本都放在比其他地方更好的工作流程中,并且需要运行taskrunner来在每次编辑后移动它们.如果你不想从wwwroot/lib下面部署所有额外的副本,那么使用taskrunner将你想要的内容处理到一个不同的文件夹,就像你在bower_components文件夹中的wwwroot之外所做的一样早期贝塔斯.并在您的Web应用程序的project.json中使用publishExclude将wwwroot/lib排除在发布之外.
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |