我正在将我的应用程序设置为不在开发中时捆绑css和js文件,而在开发时不捆绑。
为此,我首先有一个bundleconfig.json文件:
[
{
"outputFileName": "wwwroot/css/bundle.min.css",
"inputFiles": [
"wwwroot/lib/bootstrap/bootstrap.min.css",
"wwwroot/lib/jqueryui.jquery-ui.min.css"
]
},
{
"outputFileName": "wwwroot/js/bundle.min.js",
"inputFiles": [
"wwwroot/lib/jquery/jquery.min.js",
"wwwroot/lib/jqueryui/jquery-ui.min.js",
"wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js"
]
}
]
然后在我的页面中,我有一个标题标签:
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewBag.Title</title>
<environment exclude="development">
<link rel="stylesheet" href="~/css/bundle.min.css" asp-append-version="true" />
<script type="text/javascript" src="~/js/bundle.min.js" asp-append-version="true"></script>
</environment>
<environment include="development">
<link rel="stylesheet" href="~/lib/bootstrap/bootstrap.css" asp-append-version="true" />
<link rel="stylesheet" href="~/lib/jqueryui/jquery-ui.css" asp-append-version="true" />
<script type="text/javascript" src="~/lib/jquery/jquery.js" asp-append-version="true"></script>
<script type="text/javascript" src="~/lib/jqueryui/jquery-ui.js" asp-append-version="true"></script>
<script type="text/javascript" src="~/lib/bootstrap/dist/js/bootstrap.bundle.js" asp-append-version="true"></script>
</environment>
</head>
一切正常。我只是不喜欢必须在budingconfig.json和标头中的开发环境标记中复制文件列表的事实。
在WebForms项目中,我可以使用<%:Scripts.Render(“ ...”)%>,如果处于开发模式,它将为捆绑包中的每个项目生成链接,如果处于开发模式,它将为捆绑包生成1个链接。不处于开发模式。 .net核心MVC项目中是否也有类似的东西?
答案 0 :(得分:1)
ASP.NET Core中没有内置方法可以执行此操作。但是,直接滚动自己的内容是非常直接的。
Mad Christensen为MVC5构建了一个解包器,here是使它适应.NET Core的要旨。
您可以这样使用它:
<environment names="Development">
@Bundler.Unpack(HostingEnvironment.ContentRootPath, "/js/site.min.js")
</environment>
但是,如果除调试之外没有其他特定的理由要包含每个文件,则还可以依赖Sourcemap。 bundleconfig中为此有一个标志。 ("sourceMap": true
)
答案 1 :(得分:0)
您可以尝试像下面这样的 TagHelper
https://github.com/meziantou/Meziantou.AspNetCore.BundleTagHelpers
这将帮助您实现您想要的目标。而不是编写以下类型的代码
<environment names="Development">
<link rel="stylesheet" href="~/css/site1.css" />
<link rel="stylesheet" href="~/css/site2.css" />
<link rel="stylesheet" href="~/css/site3.css" />
</environment>
<environment names="Staging,Production">
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
你只能这样写:
<bundle name="wwwroot/css/site.min.css" />