2016-12-29 113 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