-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathtsconfig.ts
113 lines (102 loc) · 2.21 KB
/
tsconfig.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import {
readFileSync,
renameSync,
statSync,
unlinkSync,
writeFileSync,
} from 'fs'
import { resolve } from 'path'
import t from 'tap'
const cwd = process.cwd()
t.after(() => process.chdir(cwd))
const dir = t.testdir({
'package.json': JSON.stringify({
tshy: {
exclude: ['./src/**/*.test.ts'],
esmDialects: ['deno'],
commonjsDialects: ['webpack'],
},
}),
src: {
'index.ts': '',
'index-cjs.cts': '',
'index-deno.mts': '',
'index-webpack.mts': '',
},
})
process.chdir(dir)
t.test('with tsconfig.json file', async t => {
await import('../dist/esm/tsconfig.js')
for (const f of [
'tsconfig.json',
'.tshy/build.json',
'.tshy/commonjs.json',
'.tshy/esm.json',
]) {
t.matchSnapshot(
JSON.parse(readFileSync(resolve(dir, f), 'utf8')),
f + ' generate everything'
)
}
writeFileSync(
resolve(dir, 'tsconfig.json'),
JSON.stringify({
compilerOptions: {
yolo: '🍑',
this_data: 'is preserved',
},
})
)
unlinkSync(resolve(dir, '.tshy/build.json'))
writeFileSync(
resolve(dir, '.tshy/esm.json'),
'not even json, this gets clobbered'
)
await t.mockImport('../dist/esm/tsconfig.js')
for (const f of [
'tsconfig.json',
'.tshy/build.json',
'.tshy/commonjs.json',
'.tshy/esm.json',
'.tshy/deno.json',
'.tshy/webpack.json',
]) {
t.matchSnapshot(
JSON.parse(readFileSync(resolve(dir, f), 'utf8')),
f
)
}
})
t.test('with custom project tsconfig name', async t => {
renameSync(
resolve(dir, 'tsconfig.json'),
resolve(dir, 'custom.json')
)
writeFileSync(
resolve(dir, 'package.json'),
JSON.stringify({
tshy: {
project: 'custom.json',
esmDialects: ['deno'],
commonjsDialects: ['webpack'],
},
})
)
await t.mockImport('../dist/esm/tsconfig.js')
t.throws(() => statSync(resolve(dir, 'tsconfig.json')), {
code: 'ENOENT',
})
for (const f of [
'custom.json',
'.tshy/build.json',
'.tshy/commonjs.json',
'.tshy/esm.json',
'.tshy/deno.json',
'.tshy/webpack.json',
]) {
t.matchSnapshot(
JSON.parse(readFileSync(resolve(dir, f), 'utf8')),
f
)
}
})