UNPKG

turbo-gulp

Version:

Gulp tasks to boost high-quality projects.

82 lines (80 loc) 12.2 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; } Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const gulp_tslint_1 = require("gulp-tslint"); const minimatch_1 = require("minimatch"); const path_1 = require("path"); const tslint = __importStar(require("tslint")); const tslint_1 = require("tslint"); const typescript_1 = require("typescript"); const tslint_2 = require("../options/tslint"); const matcher = __importStar(require("../utils/matcher")); exports.taskName = ":lint"; 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_1.posix.join(project.srcDir, "**/*.ts")]; } for (const pattern of patterns) { const minimatchPattern = new minimatch_1.Minimatch(pattern); const glob = matcher.asString(matcher.join(baseDir, minimatchPattern)); sources.push(glob); } return { baseDir, sources }; } exports.getSources = getSources; function createTsProgram(tsconfigJson, basePath) { const parseConfigHost = { useCaseSensitiveFileNames: true, readDirectory: typescript_1.sys.readDirectory, fileExists: fs_1.existsSync, readFile: (path) => fs_1.readFileSync(path, "utf8"), }; const parsed = typescript_1.parseJsonConfigFileContent(tsconfigJson, parseConfigHost, basePath, { noEmit: true }); const host = typescript_1.createCompilerHost(parsed.options, true); return typescript_1.createProgram(parsed.fileNames, parsed.options, host); } function registerTask(gulp, project) { let configuration; const baseConfig = tslint_1.Configuration.parseConfigFile(tslint_2.DEFAULT_TYPED_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_1.posix.join(project.root, userRawConfig); userConfig = tslint_1.Configuration.loadConfigurationFromPath(configPath); } else { userConfig = tslint_1.Configuration.parseConfigFile(userRawConfig, project.root); } configuration = tslint_1.Configuration.extendConfigurationFile(baseConfig, userConfig); } else { configuration = baseConfig; } const program = createTsProgram({ compilerOptions: {} }, project.root); const options = Object.assign({ emitError: true, formatter: "msbuild", tslint }, project.tslint, { configuration, program }); const sources = getSources(project); gulp.task(exports.taskName, function () { return gulp.src(sources.sources, { base: sources.baseDir }) .pipe(gulp_tslint_1.default(options)) .pipe(gulp_tslint_1.default.report({ summarizeFailureOutput: true, })); }); } exports.registerTask = registerTask; //# sourceMappingURL=data:application/json;charset=utf8;base64,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cHJvamVjdC10YXNrcy9saW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyBhcyBmaWxlRXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBHdWxwIH0gZnJvbSBcImd1bHBcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMgZ3VscFRzbGludCwgUGx1Z2luT3B0aW9ucyBhcyBHdWxwVHNsaW50T3B0aW9ucyB9IGZyb20gXCJndWxwLXRzbGludFwiO1xuaW1wb3J0IHsgSU1pbmltYXRjaCwgTWluaW1hdGNoIH0gZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHsgcG9zaXggYXMgcGF0aCB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyB0c2xpbnQgZnJvbSBcInRzbGludFwiO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiBhcyBUc2xpbnRDb25maWd1cmF0aW9uIH0gZnJvbSBcInRzbGludFwiO1xuaW1wb3J0IHtcbiAgQ29tcGlsZXJIb3N0LFxuICBjcmVhdGVDb21waWxlckhvc3QsXG4gIGNyZWF0ZVByb2dyYW0sXG4gIFBhcnNlQ29uZmlnSG9zdCxcbiAgUGFyc2VkQ29tbWFuZExpbmUsXG4gIHBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50LFxuICBQcm9ncmFtLFxuICBzeXMgYXMgdHNTeXMsXG59IGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBERUZBVUxUX1RZUEVEX1RTTElOVF9DT05GSUcgfSBmcm9tIFwiLi4vb3B0aW9ucy90c2xpbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0ICogYXMgbWF0Y2hlciBmcm9tIFwiLi4vdXRpbHMvbWF0Y2hlclwiO1xuXG5leHBvcnQgY29uc3QgdGFza05hbWU6IHN0cmluZyA9IFwiOmxpbnRcIjtcblxuLyoqXG4gKiBTb3VyY2VzIHRvIHVzZSB3aGVuIGNvbXBpbGluZyBUUyBjb2RlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlcyB7XG4gIC8qKlxuICAgKiBCYXNlIGRpcmVjdG9yeSB0byB1c2Ugd2hlbiBleHBhbmRpbmcgZ2xvYiBzdGFycy5cbiAgICovXG4gIGJhc2VEaXI6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBhYnNvbHV0ZSBwYXR0ZXJucyBmb3IgdGhlIHNvdXJjZXMgKHNjcmlwdCBvciB0eXBlIGRlZmluaXRpb24pIGZpbGVzXG4gICAqL1xuICBzb3VyY2VzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZXMocHJvamVjdDogUHJvamVjdCk6IFNvdXJjZXMge1xuICBjb25zdCBiYXNlRGlyOiBzdHJpbmcgPSBwcm9qZWN0LnJvb3Q7XG4gIGNvbnN0IHNvdXJjZXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBwYXR0ZXJuczogc3RyaW5nW107XG5cbiAgaWYgKHByb2plY3QudHNsaW50ICE9PSB1bmRlZmluZWQgJiYgcHJvamVjdC50c2xpbnQuZmlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHBhdHRlcm5zID0gcHJvamVjdC50c2xpbnQuZmlsZXM7XG4gIH0gZWxzZSB7XG4gICAgcGF0dGVybnMgPSBbcGF0aC5qb2luKHByb2plY3Quc3JjRGlyLCBcIioqLyoudHNcIildO1xuICB9XG5cbiAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbWluaW1hdGNoUGF0dGVybjogSU1pbmltYXRjaCA9IG5ldyBNaW5pbWF0Y2gocGF0dGVybik7XG4gICAgY29uc3QgZ2xvYjogc3RyaW5nID0gbWF0Y2hlci5hc1N0cmluZyhtYXRjaGVyLmpvaW4oYmFzZURpciwgbWluaW1hdGNoUGF0dGVybikpO1xuICAgIHNvdXJjZXMucHVzaChnbG9iKTtcbiAgfVxuXG4gIHJldHVybiB7YmFzZURpciwgc291cmNlc307XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRzUHJvZ3JhbSh0c2NvbmZpZ0pzb246IGFueSwgYmFzZVBhdGg6IHN0cmluZyk6IFByb2dyYW0ge1xuICBjb25zdCBwYXJzZUNvbmZpZ0hvc3Q6IFBhcnNlQ29uZmlnSG9zdCA9IHtcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiB0cnVlLFxuICAgIHJlYWREaXJlY3Rvcnk6IHRzU3lzLnJlYWREaXJlY3RvcnksXG4gICAgZmlsZUV4aXN0czogZmlsZUV4aXN0c1N5bmMsXG4gICAgcmVhZEZpbGU6IChwYXRoOiBzdHJpbmcpID0+IHJlYWRGaWxlU3luYyhwYXRoLCBcInV0ZjhcIiksXG4gIH07XG4gIGNvbnN0IHBhcnNlZDogUGFyc2VkQ29tbWFuZExpbmUgPSBwYXJzZUpzb25Db25maWdGaWxlQ29udGVudChcbiAgICB0c2NvbmZpZ0pzb24sXG4gICAgcGFyc2VDb25maWdIb3N0LFxuICAgIGJhc2VQYXRoLFxuICAgIHtub0VtaXQ6IHRydWV9LFxuICApO1xuICBjb25zdCBob3N0OiBDb21waWxlckhvc3QgPSBjcmVhdGVDb21waWxlckhvc3QocGFyc2VkLm9wdGlvbnMsIHRydWUpO1xuICByZXR1cm4gY3JlYXRlUHJvZ3JhbShwYXJzZWQuZmlsZU5hbWVzLCBwYXJzZWQub3B0aW9ucywgaG9zdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclRhc2soZ3VscDogR3VscCwgcHJvamVjdDogUHJvamVjdCkge1xuICB0eXBlIFRzbGludFJhd0NvbmZpZyA9IFRzbGludENvbmZpZ3VyYXRpb24uUmF3Q29uZmlnRmlsZTtcbiAgdHlwZSBUc2xpbnRDb25maWcgPSBUc2xpbnRDb25maWd1cmF0aW9uLklDb25maWd1cmF0aW9uRmlsZTtcblxuICBsZXQgY29uZmlndXJhdGlvbjogVHNsaW50Q29uZmlnO1xuXG4gIGNvbnN0IGJhc2VDb25maWc6IFRzbGludENvbmZpZyA9IFRzbGludENvbmZpZ3VyYXRpb24ucGFyc2VDb25maWdGaWxlKERFRkFVTFRfVFlQRURfVFNMSU5UX0NPTkZJRywgcHJvamVjdC5yb290KTtcblxuICBpZiAocHJvamVjdC50c2xpbnQgIT09IHVuZGVmaW5lZCAmJiBwcm9qZWN0LnRzbGludC5jb25maWd1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB1c2VyUmF3Q29uZmlnOiBUc2xpbnRSYXdDb25maWcgfCBzdHJpbmcgPSBwcm9qZWN0LnRzbGludC5jb25maWd1cmF0aW9uO1xuICAgIGxldCB1c2VyQ29uZmlnOiBUc2xpbnRDb25maWc7XG4gICAgaWYgKHR5cGVvZiB1c2VyUmF3Q29uZmlnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBjb25maWdQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4ocHJvamVjdC5yb290LCB1c2VyUmF3Q29uZmlnKTtcbiAgICAgIHVzZXJDb25maWcgPSBUc2xpbnRDb25maWd1cmF0aW9uLmxvYWRDb25maWd1cmF0aW9uRnJvbVBhdGgoY29uZmlnUGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVzZXJDb25maWcgPSBUc2xpbnRDb25maWd1cmF0aW9uLnBhcnNlQ29uZmlnRmlsZSh1c2VyUmF3Q29uZmlnLCBwcm9qZWN0LnJvb3QpO1xuICAgIH1cbiAgICBjb25maWd1cmF0aW9uID0gVHNsaW50Q29uZmlndXJhdGlvbi5leHRlbmRDb25maWd1cmF0aW9uRmlsZShiYXNlQ29uZmlnLCB1c2VyQ29uZmlnKTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWd1cmF0aW9uID0gYmFzZUNvbmZpZztcbiAgfVxuXG4gIGNvbnN0IHByb2dyYW06IFByb2dyYW0gPSBjcmVhdGVUc1Byb2dyYW0oe2NvbXBpbGVyT3B0aW9uczoge319LCBwcm9qZWN0LnJvb3QpO1xuXG4gIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcbiAgICBlbWl0RXJyb3I6IHRydWUsXG4gICAgZm9ybWF0dGVyOiBcIm1zYnVpbGRcIixcbiAgICB0c2xpbnQsXG4gICAgLi4uKHByb2plY3QudHNsaW50IGFzIEd1bHBUc2xpbnRPcHRpb25zKSxcbiAgICBjb25maWd1cmF0aW9uLFxuICAgIHByb2dyYW0sXG4gIH07XG5cbiAgY29uc3Qgc291cmNlczogU291cmNlcyA9IGdldFNvdXJjZXMocHJvamVjdCk7XG5cbiAgZ3VscC50YXNrKHRhc2tOYW1lLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGd1bHAuc3JjKHNvdXJjZXMuc291cmNlcywge2Jhc2U6IHNvdXJjZXMuYmFzZURpcn0pXG4gICAgICAucGlwZShndWxwVHNsaW50KG9wdGlvbnMpKVxuICAgICAgLnBpcGUoZ3VscFRzbGludC5yZXBvcnQoe1xuICAgICAgICBzdW1tYXJpemVGYWlsdXJlT3V0cHV0OiB0cnVlLFxuICAgICAgfSkpO1xuICB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiLi4ifQ==