Skip to content

Commit 9f810ec

Browse files
Fix tsconfig generation with empty folders (#14875)
1 parent ab5b91d commit 9f810ec

1 file changed

Lines changed: 22 additions & 23 deletions

File tree

scripts/generators/tsconfig.js

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,25 @@ function getTsPkgs(subRoot) {
2727
return fs
2828
.readdirSync(new URL(subRoot, root))
2929
.filter(name => name.startsWith("babel-"))
30-
.map(name => {
31-
const relative = `./${subRoot}/${name}`;
30+
.map(name => ({
31+
name: name.replace(/^babel-/, "@babel/"),
32+
relative: `./${subRoot}/${name}`,
33+
}))
34+
.filter(({ name, relative }) => {
35+
const ret =
36+
// They are special-cased because them dose not have a index.ts
37+
name === "@babel/register" ||
38+
name === "@babel/cli" ||
39+
name === "@babel/node" ||
40+
// @babel/compat-data is used by preset-env
41+
name === "@babel/compat-data" ||
42+
fs.existsSync(new URL(relative + "/src/index.ts", root));
43+
if (!ret) {
44+
console.log(`Skipping ${name} for tsconfig.json`);
45+
}
46+
return ret;
47+
})
48+
.map(({ name, relative }) => {
3249
const packageJSON = importJSON(new URL(relative + "/package.json", root));
3350
// Babel 8 exports > Babel 7 exports > {}
3451
const exports =
@@ -38,10 +55,10 @@ function getTsPkgs(subRoot) {
3855
const subExports = Object.entries(exports).flatMap(
3956
([_export, exportPath]) => {
4057
// The @babel/standalone has babel.js as exports, but we don't have src/babel.ts
41-
if (name === "babel-standalone") {
58+
if (name === "@babel/standalone") {
4259
return [["", "/src"]];
4360
}
44-
if (name === "babel-compat-data") {
61+
if (name === "@babel/compat-data") {
4562
// map ./plugins to ./data/plugins.json
4663
const subExport = _export.slice(1);
4764
const subExportPath = exportPath
@@ -68,25 +85,7 @@ function getTsPkgs(subRoot) {
6885
return [];
6986
}
7087
);
71-
return {
72-
name: name.replace(/^babel-/, "@babel/"),
73-
relative,
74-
subExports,
75-
};
76-
})
77-
.filter(({ name, relative }) => {
78-
const ret =
79-
// They are special-cased because them dose not have a index.ts
80-
name === "@babel/register" ||
81-
name === "@babel/cli" ||
82-
name === "@babel/node" ||
83-
// @babel/compat-data is used by preset-env
84-
name === "@babel/compat-data" ||
85-
fs.existsSync(new URL(relative + "/src/index.ts", root));
86-
if (!ret) {
87-
console.log(`Skipping ${name} for tsconfig.json`);
88-
}
89-
return ret;
88+
return { name, relative, subExports };
9089
});
9190
}
9291

0 commit comments

Comments
 (0)