2016-12-29 110 views
0

我想要在CSHTML文件中包含Angular2构建文件。包括所有匹配的正则表达式razor cshtml

目前,我包括是:

@section scripts { 
    <script src="~/dist/main.js" asp-append-version="true"></script> 
} 

但Angular2产生,每个PROD身材,在文件名不同的标识符文件。

chunk {0} main.2e0750e4cb976b8dca8a.bundle.js (main) 15.8 kB {3} [initial] [rendered] 
chunk {1} styles.b64dd2f7c2e3011c4efb.bundle.css (styles) 154 kB {4} [initial] [rendered] 
chunk {2} scripts.e7e62c29938f18f13e86.bundle.js (scripts) 128 kB {4} [initial] [rendered] 
chunk {3} vendor.05b8df0708b580c61647.bundle.js (vendor) 3.42 MB [initial] [rendered] 
chunk {4} inline.1b4aa06545162c1bb581.bundle.js (inline) 0 bytes [entry] [rendered] 

我不想停用(如果它甚至有可能),这些标识符包括事实(非高速缓存目的)。一个人回答了GitHub的问题页面一些正则表达式可以用来使包括:

/(main|styles|scripts|vendor|inline).*.bundle.(map|js|css)/g 

但我不明白如何将它传递给我的C#/ CSHTML文件。

它应该导致包括与给定目录(wwwroot或〜作为快捷方式)中的模式匹配的所有文件。

有关如何实现这一点的任何想法?

回答

2

对于脚本,可以使用asp-src-include标记助手,链接(css)可以使用asp-href-include

<script asp-src-include="~/dist/main.*.bundle.js" asp-append-version="true"></script> 
<link asp-href-include="~/dist/styles.*.bundle.css"/> 

然而IIRC你不能使用正则表达式里面,只有晶片被保护路径(即dist/**/*.js其中**会看通过所有子文件夹了。

如果不符合您的需求,您需要写自己的标签帮手。

见GitHub上为LinkTagHelperScriptTagHelper当前的实现。

我不建议你使用反正对正则表达式的主要部分,因为你没有C根据文件的顺序进行控制。所以最好手动控制它,并且只做标识符/ hashsum变量。

+0

感谢它按预期工作! – BlackHoleGalaxy