turbo-gulp
Version:
Gulp tasks to boost high-quality projects.
85 lines (83 loc) • 12.1 kB
JavaScript
;
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=