UNPKG

1.18 kBJavaScriptView Raw
1"use strict";
2
3const path = require("path");
4const ts = require("typescript");
5
6const cwd = process.cwd();
7const compilerOptions = loadCompilerOptions(cwd) || {};
8const extensions = ["ts", "tsx"];
9if (compilerOptions.allowJs) {
10 extensions.push("js");
11 extensions.push("jsx");
12}
13
14let testDir = "test";
15const packageData = require(path.join(cwd, "package.json"));
16if (
17 packageData &&
18 typeof packageData.directories === "object" &&
19 typeof packageData.directories.test === "string"
20) {
21 testDir = packageData.directories.test;
22}
23const pattern = path.join(testDir, `**/*.@(${extensions.join("|")})`);
24
25require("./index")({ cwd, pattern, extensions });
26
27function loadCompilerOptions(cwd) {
28 const tsconfigPath = ts.findConfigFile(cwd, ts.sys.fileExists);
29 if (!tsconfigPath) {
30 return null;
31 }
32 const result = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
33 if (result.error) {
34 throw new Error(result.error.messageText);
35 }
36 if (result.config && result.config.compilerOptions) {
37 const basepath = path.dirname(tsconfigPath);
38 const { options } = ts.parseJsonConfigFileContent(result.config, ts.sys, basepath);
39 return options;
40 }
41 return null;
42}