Microsoft/TypeScript
View on GitHubTypeScript 4.2 caches cwd between builds when using the programatic api
Open
#43,120 opened on Mar 6, 2021
BugDomain: tsc -bHelp Wanted
Description
Bug Report
When using TypeScript 4.2 from the programmatic API, it seems to cache the CWD between runs. I don't think this is the desired effect. This can result in "Cannot read file '..../tsconfig.json'"
๐ Search Terms
cwd, current working directory
๐ Version & Regression Information
- This bug started in 4.2.2.
- Earlier versions as far back as 3.7 work as expected.
- Nightly
typescript@nextalso has this problem.
โฏ Playground Link
Programmatic API, so no playground link available. I made a small repro repo: ts-cwd-issue.zip
Unzip, npm i and node compile.js.
๐ป Code
// @ts-check
const ts = require('typescript');
const path = require('path');
async function build(tsconfig) {
return new Promise(res => {
const compiler = ts.createSolutionBuilderWithWatch(
ts.createSolutionBuilderWithWatchHost(ts.sys,
undefined,
(error) => console.error(tsconfig,'error: ', error.messageText),
(status) => console.log(tsconfig,'status:', status.messageText),
(summary) => {
console.log(tsconfig, 'summary: ', summary.messageText);
res();
}
),
[tsconfig],
{}
);
compiler.build();
});
}
async function main() {
process.chdir(path.resolve(__dirname, 'sample-a'));
await build('tsconfig.a.json')
process.chdir(path.resolve(__dirname, 'sample-b'));
await build('tsconfig.b.json')
}
main().catch(console.error);
๐ Actual behavior
$ node compile.js
tsconfig.a.json summary: Found 0 errors. Watching for file changes.
tsconfig.b.json error: Cannot read file '.../sample-a/tsconfig.b.json'.
tsconfig.b.json summary: Found 1 error. Watching for file changes.
๐ Expected behavior
$ node compile.js
tsconfig.a.json summary: Found 0 errors. Watching for file changes.
tsconfig.b.json summary: Found 0 errors. Watching for file changes.