UNPKG

turbo-gulp

Version:

Gulp tasks to boost high-quality projects.

53 lines (52 loc) 2.11 kB
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, })); }); }