在我的项目内" Scripts"文件夹我有很多子目录。我想用输出缩小每个js文件,将其命名为" adjacent-subdirectory / file_name.min.js" 。为此我在BundleConfig.xml文件中使用下面的代码:
<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>
当我放置&#34; * \&#34;在我的OutputFile标记中,我遇到了构建错误。那么有人可以指导我如何实现这一点(每个缩小的文件应该只放在相应的子目录中)
答案 0 :(得分:1)
首先单独压缩每个文件(不合并它们),您需要使用%而不是SourceFiles中的@批量处理JavascriptCompresor任务。
其次,您可以在include路径中使用**,并在JavascriptCompressor任务中使用%(RecursiveDir)替换它。
我目前无法测试,但我认为以下内容应该有效:
<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