Skip to content

Commit 30b8213

Browse files
committed
Pin Express types in TypeScript 3.8 script
1 parent 4c10c9e commit 30b8213

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,42 @@
11
/* eslint-disable no-console */
22
const { execSync } = require('child_process');
33
const { join } = require('path');
4-
const { writeFileSync } = require('fs');
4+
const { readFileSync, writeFileSync } = require('fs');
55

66
const cwd = join(__dirname, '../../..');
77

8+
// Newer versions of the Express types use syntax that isn't supported by TypeScript 3.8.
9+
// We'll pin to the last version of those types that are compatible.
10+
console.log('Pinning Express types to old versions...');
11+
12+
const packageJsonPath = join(cwd, 'package.json');
13+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
14+
15+
if (!packageJson.resolutions) packageJson.resolutions = {};
16+
packageJson.resolutions['@types/express'] = '4.17.13';
17+
packageJson.resolutions['@types/express-serve-static-core'] = '4.17.30';
18+
19+
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
20+
821
const tsVersion = '3.8';
922

1023
console.log(`Installing typescript@${tsVersion}, and @types/node@14...`);
1124

12-
execSync(`yarn add --dev --ignore-workspace-root-check typescript@${tsVersion} @types/node@^14`, {
13-
stdio: 'inherit',
14-
cwd,
15-
});
25+
execSync(
26+
`yarn add --dev --ignore-workspace-root-check typescript@${tsVersion} @types/node@^14 @types/[email protected] @types/[email protected]`,
27+
{
28+
stdio: 'inherit',
29+
cwd,
30+
},
31+
);
1632

1733
console.log('Removing unsupported tsconfig options...');
1834

1935
const baseTscConfigPath = join(cwd, 'packages/typescript/tsconfig.json');
2036

2137
const tsConfig = require(baseTscConfigPath);
2238

23-
// TS 3.8 fails build when it encounteres a config option it does not understand, so we remove it :(
39+
// TS 3.8 fails build when it encounters a config option it does not understand, so we remove it :(
2440
delete tsConfig.compilerOptions.noUncheckedIndexedAccess;
2541

2642
writeFileSync(baseTscConfigPath, JSON.stringify(tsConfig, null, 2));

0 commit comments

Comments
 (0)