gulp-msbuild
Version:
msbuild plugin for gulp. Inspired by grunt-msbuild.
94 lines (87 loc) • 3.12 kB
text/typescript
import { MSBuildOptions } from './msbuild/msbuild-options';
import through from 'through2';
import { MSBuildRunner } from './msbuild/msbuild-runner';
import { join } from 'path';
import { ArchitectureService } from './utilities/ArchitectureService';
import * as os from 'os';
import { v4 } from 'uuid';
function MSBuild({
stdout = false,
stderr = true,
errorOnFail = false,
logCommand = false,
targets = ['rebuild'],
configuration = 'Release',
toolsVersion = 'auto',
properties = {},
verbosity = 'normal',
maxcpucount = 0,
nologo = true,
platform = process.platform,
architecture = ArchitectureService.Architecture,
windir = ArchitectureService.Platform,
msbuildPath = undefined,
fileLoggerParameters = undefined,
consoleLoggerParameters = undefined,
loggerParameters = undefined,
nodeReuse = true,
customArgs = [],
emitEndEvent = false,
solutionPlatform = undefined,
emitPublishedFiles = false,
deployDefaultTarget = 'WebPublish',
webPublishMethod = 'FileSystem',
deleteExistingFiles = 'true',
findDependencies = 'true',
publishDirectory = join(os.tmpdir(), v4())
}) {
let options = new MSBuildOptions({
stdout: stdout,
stderr: stderr,
errorOnFail: errorOnFail,
logCommand: logCommand,
targets: targets,
configuration: configuration,
toolsVersion: toolsVersion,
properties: properties,
verbosity: verbosity,
maxcpucount: maxcpucount,
nologo: nologo,
platform: platform,
architecture: architecture,
windir: windir,
msbuildPath: msbuildPath,
fileLoggerParameters: fileLoggerParameters,
consoleLoggerParameters: consoleLoggerParameters,
loggerParameters: loggerParameters,
nodeReuse: nodeReuse,
customArgs: customArgs,
emitEndEvent: emitEndEvent,
solutionPlatform: solutionPlatform,
emitPublishedFiles: emitPublishedFiles,
deployDefaultTarget: deployDefaultTarget,
webPublishMethod: webPublishMethod,
deleteExistingFiles: deleteExistingFiles,
findDependencies: findDependencies,
publishDirectory: publishDirectory
});
const stream = through.obj(function (file: any, enc: BufferEncoding, callback: through.TransformCallback) {
const self = this;
if (!file || !file.path) {
self.push(file);
return callback();
}
return MSBuildRunner.startMsBuildTask(options, file, self, function (err: Error | null) {
if (err) {
return callback(err);
}
if (options.emitEndEvent) {
self.emit("end");
}
return callback();
});
});
return stream;
}
module.exports = MSBuild;
module.exports.default = MSBuild;