使用 YUI compressor .NET 压缩子文件夹中的所有 JS 文件
Compress all JS files in subfolders using YUI compressor .NET
在我的 "Scripts" 文件夹内的项目中,我有很多子目录。我想缩小每个 js 文件,并将输出命名为 "respective-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>
当我在我的 OutputFile 标签中放置“*\”时,出现构建错误。那么有人可以指导我如何实现这一点(每个缩小的文件应该只放在各自的子目录中)
首先要单独压缩每个文件(而不是合并它们),您需要在 SourceFiles 中使用 % 而不是 @ 来批处理 JavascriptCompresor 任务。
其次,您可以在包含路径中使用 ** 并在 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
在我的 "Scripts" 文件夹内的项目中,我有很多子目录。我想缩小每个 js 文件,并将输出命名为 "respective-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>
当我在我的 OutputFile 标签中放置“*\”时,出现构建错误。那么有人可以指导我如何实现这一点(每个缩小的文件应该只放在各自的子目录中)
首先要单独压缩每个文件(而不是合并它们),您需要在 SourceFiles 中使用 % 而不是 @ 来批处理 JavascriptCompresor 任务。
其次,您可以在包含路径中使用 ** 并在 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