Объединить несколько файлов jscript в один с задачей msbuild? - PullRequest
2 голосов
/ 10 июля 2010

Я использую Microsoft Ajax Minifier для преобразования file1.js в file1.min.js. Теперь я хотел бы взять file1.min.js и file2.min.js и объединить их в файлы-merged.min.js.

Я нашел несколько проектов msbuild с открытым исходным кодом, но без документации о том, как их использовать!

Я использую Visual Studio 2010, может ли Ajax Minifier это делать, если нет, у вас есть какие-либо советы о том, как это сделать?

Я хочу, чтобы это был автоматизированный процесс, который будет выполняться каждый раз, когда я создаю решение.

Ответы [ 3 ]

2 голосов
/ 01 марта 2017

В решении MSBild вы можете использовать как минимум три подхода.

  1. Выполнить команду копирования (просто для понимания и поддержки, может влиять повысить производительность в случае большого количества вызовов);
  2. Использовать задачи MSL-сборки ReadLinesFromFile / WriteLinesToFile (достаточно просто, но полученный файл потеряет форматирование)
  3. Использовать .NET File.ReadAllText / WriteLinesToFile (хороший результат, но в некоторых случаях может быть сложным)

Выполнение команды копирования

Чтобы объединиться с командой копирования, вы должны добавить что-то вроде этого в вашу цель:

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

В большинстве случаев этого должно быть достаточно.

Использование задач MSbuild ReadLinesFromFile / WriteLinesToFile

<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.

2 голосов
/ 10 июля 2010

Я сделал это, следуя этой статье:

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

Я бы предпочел не использовать инструмент JSMin, поскольку у меня уже есть AJAX Minifier, поэтому я использую JSMin только для объединения файлов,Может ли Minifier обрабатывать слияние файлов?

1 голос
/ 10 августа 2010
C:\Progra~1\Microsoft\Micros~1\AjaxMin.exe js1.js js2.js -o jscombine.js -clobber
...