turbo-gulp
Version:
Gulp tasks to boost high-quality projects.
53 lines (52 loc) • 2.11 kB
JavaScript
import { default as gulpTslint } from "gulp-tslint";
import { Minimatch } from "minimatch";
import { posix as path } from "path";
import * as tslint from "tslint";
import { DEFAULT_UNTYPED_TSLINT_CONFIG } from "../options/tslint";
import * as matcher from "../utils/matcher";
export const taskName = ":lint:fix";
export function getSources(project) {
const baseDir = project.root;
const sources = [];
let patterns;
if (project.tslint !== undefined && project.tslint.files !== undefined) {
patterns = project.tslint.files;
}
else {
patterns = [path.join(project.srcDir, "**/*.ts")];
}
for (const pattern of patterns) {
const minimatchPattern = new Minimatch(pattern);
const glob = matcher.asString(matcher.join(baseDir, minimatchPattern));
sources.push(glob);
}
return { baseDir, sources };
}
export function registerTask(gulp, project) {
let configuration;
const baseConfig = tslint.Configuration.parseConfigFile(DEFAULT_UNTYPED_TSLINT_CONFIG, project.root);
if (project.tslint !== undefined && project.tslint.configuration !== undefined) {
const userRawConfig = project.tslint.configuration;
let userConfig;
if (typeof userRawConfig === "string") {
const configPath = path.join(project.root, userRawConfig);
userConfig = tslint.Configuration.loadConfigurationFromPath(configPath);
}
else {
userConfig = tslint.Configuration.parseConfigFile(userRawConfig, project.root);
}
configuration = tslint.Configuration.extendConfigurationFile(baseConfig, userConfig);
}
else {
configuration = baseConfig;
}
const options = Object.assign({ formatter: "msbuild", tslint }, project.tslint, { configuration, fix: true });
const sources = getSources(project);
gulp.task(taskName, function () {
return gulp.src(sources.sources, { base: sources.baseDir })
.pipe(gulpTslint(options))
.pipe(gulpTslint.report({
summarizeFailureOutput: true,
}));
});
}