UNPKG

turbo-gulp

Version:

Gulp tasks to boost high-quality projects.

85 lines (83 loc) 12.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; 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 = __importDefault(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvcHJvamVjdC10YXNrcy9saW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJCQUFnRTtBQUVoRSw4REFBd0Y7QUFDeEYseUNBQWtEO0FBQ2xELCtCQUFxQztBQUNyQywrQ0FBaUM7QUFDakMsbUNBQThEO0FBQzlELDJDQVNvQjtBQUNwQiw4Q0FBZ0U7QUFFaEUsMERBQTRDO0FBRS9CLFFBQUEsUUFBUSxHQUFXLE9BQU8sQ0FBQztBQWlCeEMsb0JBQTJCLE9BQWdCO0lBQ3pDLE1BQU0sT0FBTyxHQUFXLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDckMsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQzdCLElBQUksUUFBa0IsQ0FBQztJQUV2QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN0RSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDakM7U0FBTTtRQUNMLFFBQVEsR0FBRyxDQUFDLFlBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQ25EO0lBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7UUFDOUIsTUFBTSxnQkFBZ0IsR0FBZSxJQUFJLHFCQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQVcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDL0UsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNwQjtJQUVELE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7QUFDNUIsQ0FBQztBQWxCRCxnQ0FrQkM7QUFFRCx5QkFBeUIsWUFBaUIsRUFBRSxRQUFnQjtJQUMxRCxNQUFNLGVBQWUsR0FBb0I7UUFDdkMseUJBQXlCLEVBQUUsSUFBSTtRQUMvQixhQUFhLEVBQUUsZ0JBQUssQ0FBQyxhQUFhO1FBQ2xDLFVBQVUsRUFBRSxlQUFjO1FBQzFCLFFBQVEsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsaUJBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0tBQ3ZELENBQUM7SUFDRixNQUFNLE1BQU0sR0FBc0IsdUNBQTBCLENBQzFELFlBQVksRUFDWixlQUFlLEVBQ2YsUUFBUSxFQUNSLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUNmLENBQUM7SUFDRixNQUFNLElBQUksR0FBaUIsK0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRSxPQUFPLDBCQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxzQkFBNkIsSUFBVSxFQUFFLE9BQWdCO0lBSXZELElBQUksYUFBMkIsQ0FBQztJQUVoQyxNQUFNLFVBQVUsR0FBaUIsc0JBQW1CLENBQUMsZUFBZSxDQUFDLG9DQUEyQixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoSCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUM5RSxNQUFNLGFBQWEsR0FBNkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDN0UsSUFBSSxVQUF3QixDQUFDO1FBQzdCLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ3JDLE1BQU0sVUFBVSxHQUFXLFlBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNsRSxVQUFVLEdBQUcsc0JBQW1CLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLFVBQVUsR0FBRyxzQkFBbUIsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRTtRQUNELGFBQWEsR0FBRyxzQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDckY7U0FBTTtRQUNMLGFBQWEsR0FBRyxVQUFVLENBQUM7S0FDNUI7SUFFRCxNQUFNLE9BQU8sR0FBWSxlQUFlLENBQUMsRUFBQyxlQUFlLEVBQUUsRUFBRSxFQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlFLE1BQU0sT0FBTyxtQkFDWCxTQUFTLEVBQUUsSUFBSSxFQUNmLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sSUFDRixPQUFPLENBQUMsTUFBNEIsSUFDeEMsYUFBYTtRQUNiLE9BQU8sR0FDUixDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQVksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQVEsRUFBRTtRQUNsQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFDLENBQUM7YUFDdEQsSUFBSSxDQUFDLHFCQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekIsSUFBSSxDQUFDLHFCQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3RCLHNCQUFzQixFQUFFLElBQUk7U0FDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUExQ0Qsb0NBMENDIiwiZmlsZSI6InByb2plY3QtdGFza3MvbGludC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMgYXMgZmlsZUV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgR3VscCB9IGZyb20gXCJndWxwXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGd1bHBUc2xpbnQsIFBsdWdpbk9wdGlvbnMgYXMgR3VscFRzbGludE9wdGlvbnMgfSBmcm9tIFwiZ3VscC10c2xpbnRcIjtcbmltcG9ydCB7IElNaW5pbWF0Y2gsIE1pbmltYXRjaCB9IGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IHBvc2l4IGFzIHBhdGggfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgdHNsaW50IGZyb20gXCJ0c2xpbnRcIjtcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gYXMgVHNsaW50Q29uZmlndXJhdGlvbiB9IGZyb20gXCJ0c2xpbnRcIjtcbmltcG9ydCB7XG4gIENvbXBpbGVySG9zdCxcbiAgY3JlYXRlQ29tcGlsZXJIb3N0LFxuICBjcmVhdGVQcm9ncmFtLFxuICBQYXJzZUNvbmZpZ0hvc3QsXG4gIFBhcnNlZENvbW1hbmRMaW5lLFxuICBwYXJzZUpzb25Db25maWdGaWxlQ29udGVudCxcbiAgUHJvZ3JhbSxcbiAgc3lzIGFzIHRzU3lzLFxufSBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgREVGQVVMVF9UWVBFRF9UU0xJTlRfQ09ORklHIH0gZnJvbSBcIi4uL29wdGlvbnMvdHNsaW50XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCAqIGFzIG1hdGNoZXIgZnJvbSBcIi4uL3V0aWxzL21hdGNoZXJcIjtcblxuZXhwb3J0IGNvbnN0IHRhc2tOYW1lOiBzdHJpbmcgPSBcIjpsaW50XCI7XG5cbi8qKlxuICogU291cmNlcyB0byB1c2Ugd2hlbiBjb21waWxpbmcgVFMgY29kZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZXMge1xuICAvKipcbiAgICogQmFzZSBkaXJlY3RvcnkgdG8gdXNlIHdoZW4gZXhwYW5kaW5nIGdsb2Igc3RhcnMuXG4gICAqL1xuICBiYXNlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWJzb2x1dGUgcGF0dGVybnMgZm9yIHRoZSBzb3VyY2VzIChzY3JpcHQgb3IgdHlwZSBkZWZpbml0aW9uKSBmaWxlc1xuICAgKi9cbiAgc291cmNlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VzKHByb2plY3Q6IFByb2plY3QpOiBTb3VyY2VzIHtcbiAgY29uc3QgYmFzZURpcjogc3RyaW5nID0gcHJvamVjdC5yb290O1xuICBjb25zdCBzb3VyY2VzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgcGF0dGVybnM6IHN0cmluZ1tdO1xuXG4gIGlmIChwcm9qZWN0LnRzbGludCAhPT0gdW5kZWZpbmVkICYmIHByb2plY3QudHNsaW50LmZpbGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBwYXR0ZXJucyA9IHByb2plY3QudHNsaW50LmZpbGVzO1xuICB9IGVsc2Uge1xuICAgIHBhdHRlcm5zID0gW3BhdGguam9pbihwcm9qZWN0LnNyY0RpciwgXCIqKi8qLnRzXCIpXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgIGNvbnN0IG1pbmltYXRjaFBhdHRlcm46IElNaW5pbWF0Y2ggPSBuZXcgTWluaW1hdGNoKHBhdHRlcm4pO1xuICAgIGNvbnN0IGdsb2I6IHN0cmluZyA9IG1hdGNoZXIuYXNTdHJpbmcobWF0Y2hlci5qb2luKGJhc2VEaXIsIG1pbmltYXRjaFBhdHRlcm4pKTtcbiAgICBzb3VyY2VzLnB1c2goZ2xvYik7XG4gIH1cblxuICByZXR1cm4ge2Jhc2VEaXIsIHNvdXJjZXN9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUc1Byb2dyYW0odHNjb25maWdKc29uOiBhbnksIGJhc2VQYXRoOiBzdHJpbmcpOiBQcm9ncmFtIHtcbiAgY29uc3QgcGFyc2VDb25maWdIb3N0OiBQYXJzZUNvbmZpZ0hvc3QgPSB7XG4gICAgdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczogdHJ1ZSxcbiAgICByZWFkRGlyZWN0b3J5OiB0c1N5cy5yZWFkRGlyZWN0b3J5LFxuICAgIGZpbGVFeGlzdHM6IGZpbGVFeGlzdHNTeW5jLFxuICAgIHJlYWRGaWxlOiAocGF0aDogc3RyaW5nKSA9PiByZWFkRmlsZVN5bmMocGF0aCwgXCJ1dGY4XCIpLFxuICB9O1xuICBjb25zdCBwYXJzZWQ6IFBhcnNlZENvbW1hbmRMaW5lID0gcGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgdHNjb25maWdKc29uLFxuICAgIHBhcnNlQ29uZmlnSG9zdCxcbiAgICBiYXNlUGF0aCxcbiAgICB7bm9FbWl0OiB0cnVlfSxcbiAgKTtcbiAgY29uc3QgaG9zdDogQ29tcGlsZXJIb3N0ID0gY3JlYXRlQ29tcGlsZXJIb3N0KHBhcnNlZC5vcHRpb25zLCB0cnVlKTtcbiAgcmV0dXJuIGNyZWF0ZVByb2dyYW0ocGFyc2VkLmZpbGVOYW1lcywgcGFyc2VkLm9wdGlvbnMsIGhvc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJUYXNrKGd1bHA6IEd1bHAsIHByb2plY3Q6IFByb2plY3QpIHtcbiAgdHlwZSBUc2xpbnRSYXdDb25maWcgPSBUc2xpbnRDb25maWd1cmF0aW9uLlJhd0NvbmZpZ0ZpbGU7XG4gIHR5cGUgVHNsaW50Q29uZmlnID0gVHNsaW50Q29uZmlndXJhdGlvbi5JQ29uZmlndXJhdGlvbkZpbGU7XG5cbiAgbGV0IGNvbmZpZ3VyYXRpb246IFRzbGludENvbmZpZztcblxuICBjb25zdCBiYXNlQ29uZmlnOiBUc2xpbnRDb25maWcgPSBUc2xpbnRDb25maWd1cmF0aW9uLnBhcnNlQ29uZmlnRmlsZShERUZBVUxUX1RZUEVEX1RTTElOVF9DT05GSUcsIHByb2plY3Qucm9vdCk7XG5cbiAgaWYgKHByb2plY3QudHNsaW50ICE9PSB1bmRlZmluZWQgJiYgcHJvamVjdC50c2xpbnQuY29uZmlndXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdXNlclJhd0NvbmZpZzogVHNsaW50UmF3Q29uZmlnIHwgc3RyaW5nID0gcHJvamVjdC50c2xpbnQuY29uZmlndXJhdGlvbjtcbiAgICBsZXQgdXNlckNvbmZpZzogVHNsaW50Q29uZmlnO1xuICAgIGlmICh0eXBlb2YgdXNlclJhd0NvbmZpZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgY29uZmlnUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKHByb2plY3Qucm9vdCwgdXNlclJhd0NvbmZpZyk7XG4gICAgICB1c2VyQ29uZmlnID0gVHNsaW50Q29uZmlndXJhdGlvbi5sb2FkQ29uZmlndXJhdGlvbkZyb21QYXRoKGNvbmZpZ1BhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1c2VyQ29uZmlnID0gVHNsaW50Q29uZmlndXJhdGlvbi5wYXJzZUNvbmZpZ0ZpbGUodXNlclJhd0NvbmZpZywgcHJvamVjdC5yb290KTtcbiAgICB9XG4gICAgY29uZmlndXJhdGlvbiA9IFRzbGludENvbmZpZ3VyYXRpb24uZXh0ZW5kQ29uZmlndXJhdGlvbkZpbGUoYmFzZUNvbmZpZywgdXNlckNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlndXJhdGlvbiA9IGJhc2VDb25maWc7XG4gIH1cblxuICBjb25zdCBwcm9ncmFtOiBQcm9ncmFtID0gY3JlYXRlVHNQcm9ncmFtKHtjb21waWxlck9wdGlvbnM6IHt9fSwgcHJvamVjdC5yb290KTtcblxuICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgZW1pdEVycm9yOiB0cnVlLFxuICAgIGZvcm1hdHRlcjogXCJtc2J1aWxkXCIsXG4gICAgdHNsaW50LFxuICAgIC4uLihwcm9qZWN0LnRzbGludCBhcyBHdWxwVHNsaW50T3B0aW9ucyksXG4gICAgY29uZmlndXJhdGlvbixcbiAgICBwcm9ncmFtLFxuICB9O1xuXG4gIGNvbnN0IHNvdXJjZXM6IFNvdXJjZXMgPSBnZXRTb3VyY2VzKHByb2plY3QpO1xuXG4gIGd1bHAudGFzayh0YXNrTmFtZSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBndWxwLnNyYyhzb3VyY2VzLnNvdXJjZXMsIHtiYXNlOiBzb3VyY2VzLmJhc2VEaXJ9KVxuICAgICAgLnBpcGUoZ3VscFRzbGludChvcHRpb25zKSlcbiAgICAgIC5waXBlKGd1bHBUc2xpbnQucmVwb3J0KHtcbiAgICAgICAgc3VtbWFyaXplRmFpbHVyZU91dHB1dDogdHJ1ZSxcbiAgICAgIH0pKTtcbiAgfSk7XG59XG4iXSwic291cmNlUm9vdCI6Ii4uIn0=