4

我正在使用 Microsoft Ajax Minifier 将 file1.js 转换为 file1.min.js。现在我想将 file1.min.js 和 file2.min.js 合并到 files-merged.min.js 中。

我找到了几个开源 msbuild 项目,但没有关于如何使用它们的文档!

我正在使用 Visual Studio 2010,这是 Ajax Minifier 可以做的事情吗?如果没有,您对如何做有任何提示吗?

我希望这是一个自动化的过程,每次构建解决方案时都会做一些事情。

4

3 回答 3

3

在 MSBild 解决方案中,您至少可以使用三种方法。

  1. 执行复制命令(简单理解和支持,如果调用过多,可能会影响构建性能);
  2. 使用 ReadLinesFromFile/WriteLinesToFile msbuild 任务(很简单,但生成的文件会丢失格式)
  3. 使用 .NET File.ReadAllText/WriteLinesToFile(效果不错,但在某些情况下可能会很复杂)

执行复制命令

要与复制命令合并,您应该在目标中添加类似这样的内容:

<Exec Command="COPY /b file1.min.js + file2.min.js files-merged.min.js" />

在大多数情况下,它应该足够了。

使用 ReadLinesFromFile/WriteLinesToFile msbuild 任务

<ItemGroup>
  <SourceFiles Include="file1.min.js;file2.min.js" />
</ItemGroup>

<ReadLinesFromFile File="%(SourceFiles.Identity)">
  <Output TaskParameter="Lines" ItemName="FileLines" />
</ReadLinesFromFile>

<WriteLinesToFile File="files-merged.min.js" Lines="@(FileLines)" Overwrite="true" />

此示例说明如何使用本机 msbuild 工具来合并这两个文件。不幸的是,在这种情况下,我们丢失了文件格式。

使用 .NET File.ReadAllText() 和 msbuild WriteLinesToFile

<ItemGroup>
  <SourceFiles Include="arrays.cmd;cp.cmd" />
  <FileLines Include="$([System.IO.File]::ReadAllText(%(SourceFiles.Identity)))" />
</ItemGroup>

<WriteLinesToFile File="test.out" Lines="@(FileLines)" Overwrite="true" />

这种方法快速准确,但使用了某种 .NET 注入。

于 2017-03-01T13:05:20.333 回答
2

我是按照这篇文章做到的:

http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/

我不想使用 JSMin 工具,因为我已经有了 AJAX Minifier,所以我使用 JSMin 只是为了合并文件。Minifier 可以处理文件的合并吗?

于 2010-07-10T12:41:08.273 回答
1
C:\Progra~1\Microsoft\Micros~1\AjaxMin.exe js1.js js2.js -o jscombine.js -clobber
于 2010-08-10T07:27:35.450 回答