0

我正在使用ajaxmin来缩小我所有的 JS 文件。一切正常,但我对生成输出文件的方式没有什么问题。

目前发生的事情是 JS 文件在其路径旁边被缩小。例如,如果原始路径是includes/js/test.js,那么它会在include/js/test.min.js处被缩小。

我希望我的所有 js 文件在与原始位置不同的位置缩小。例如,我所有的 js 文件都在include/js/JSFILESHERE下,我希望这些 js 文件在include/minifiedjs/MINIFIEDJSFILESHERE处被缩小。

我使用下面的代码。

    <Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.tasks" />
    <Target Name="AfterBuild">
        <ItemGroup>
            <JS Include="\js\*.js" Exclude="**\*.min.js;" />
        </ItemGroup>  
    <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\js\.js$" JsTargetExtension=".min.js"/>
    </Target>

请帮忙。

4

1 回答 1

1

很抱歉回答这个问题有点晚。

这是我用于我的项目的解决方案 -

<Target Name="AfterBuild">
<PropertyGroup>
  <DestinationPath>$(MSBuildProjectDirectory)\build-publish</DestinationPath>
</PropertyGroup>
<ItemGroup>
  <JS Include="Scripts\app\**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
</ItemGroup>
<Copy SourceFiles="@(JS)" DestinationFiles="@(JS -> '$(DestinationPath)\%(RecursiveDir)%(Filename).src%(Extension)')" Condition="'%(Extension)'=='.js'">
  <Output ItemName="JavaScriptFiles" TaskParameter="DestinationFiles" />
</Copy>
<AjaxMin JsSourceFiles="@(JavaScriptFiles)" JsSourceExtensionPattern="\.src.js$" JsTargetExtension="min.js" SourceMapType="V3">
</AjaxMin>

这里首先将文件复制到目标文件夹(递归),然后对它们应用缩小。我需要源映射文件,这就是我保留原始文件的原因,但如果您不需要源映射,那么您可以在缩小完成后删除源文件。

于 2013-08-21T13:10:07.860 回答