2015-10-03 147 views
0

在我的「腳本」文件夾內的項目中,我有許多子目錄。我想縮小每個js文件的輸出,並將其命名爲「各個子目錄/文件名.min.js」。對於我使用下面的代碼在我BundleConfig.xml文件:使用YUI壓縮器壓縮子文件夾中的所有JS文件.NET

<Target Name="Minify"> 
    <CreateItem Include="$(MSBuildProjectDirectory)\Scripts\*\*.js;"> 
     <Output TaskParameter="Include" ItemName="JsFiles"/> 
    </CreateItem> 

    <JavaScriptCompressorTask 
    SourceFiles="@(JsFiles)" 
    DeleteSourceFiles="false" 
    OutputFile="$(MSBuildProjectDirectory)\Scripts\*\%(JsFiles.Filename).min.js" 
    CompressionType="Standard" 
    LoggingType="Info" 
    LineBreakPosition="-1" 
    /> 
</Target> 

當我把「* \」在我OUTPUTFILE標籤,我正在建立自己的錯誤。所以有人可以指導我如何做到這一點(每個縮小文件應該只放在各自的子目錄中)

回答

1

首先要單獨壓縮每個文件(爲了不合並它們),您需要使用%而不是SourceFiles中的@。其次,你可以在包含路徑和%(RecursiveDir)中使用**來代替JavascriptCompressor任務。

我目前無法測試,但我認爲像下面應該工作:

<Target Name="Minify"> 
    <CreateItem Include="$(MSBuildProjectDirectory)\Scripts\**\*.js;"> 
     <Output TaskParameter="Include" ItemName="JsFiles"/> 
    </CreateItem> 

    <JavaScriptCompressorTask 
    SourceFiles="@(JsFiles)" 
    DeleteSourceFiles="false" 
    OutputFile="$(MSBuildProjectDirectory)\Scripts\%(JsFiles.RecursiveDir)\%(JsFiles.Filename).min.js" 
    CompressionType="Standard" 
    LoggingType="Info" 
    LineBreakPosition="-1" 
    /> 
</Target> 

有關RecursiveDir的更多信息,你可以閱讀這篇文章:https://msdn.microsoft.com/en-us/library/ms164313.aspx

+0

感謝@Benamin您回答。其實這並不適合我。我不得不使用「%(RelativeDir)」作爲下面的代碼來使它工作。請讓我知道如果我錯了: Sriks

+0

我現在無法測試,但如果你得到你的縮小文件在正確的目錄應該是好的。 RecursiveDir替換了我修改的包含路徑中的**部分。 RelativeDir與你在include中使用單個*的方式相同。 –

相關問題