update tsconfig generation to reference dependencies used in source code (#12941)
* update tsconfig generation to reference dependencies used in source code in some cases there are devDependecnies used for type-checking, this change adds references to them when generationg tsconfig * use regexp to extract import sources instead of parsing the code * try reverting globby to previously installed version * Run `generate-tsconfig` after `bootstrap-only` * Revert "try reverting globby to previously installed version" This reverts commit 56489622137f6f56938c781ea3aec5c98528b033. Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
This commit is contained in:
parent
df51ba03cd
commit
6e1e00388b
4
Makefile
4
Makefile
@ -243,8 +243,8 @@ endif
|
|||||||
bootstrap-only: clean-all
|
bootstrap-only: clean-all
|
||||||
yarn install
|
yarn install
|
||||||
|
|
||||||
bootstrap: bootstrap-only generate-tsconfig
|
bootstrap: bootstrap-only
|
||||||
$(MAKE) build
|
$(MAKE) generate-tsconfig build
|
||||||
|
|
||||||
clean-lib:
|
clean-lib:
|
||||||
$(foreach source, $(SOURCES), \
|
$(foreach source, $(SOURCES), \
|
||||||
|
|||||||
@ -52,6 +52,7 @@
|
|||||||
"eslint-plugin-prettier": "^3.1.2",
|
"eslint-plugin-prettier": "^3.1.2",
|
||||||
"fancy-log": "^1.3.3",
|
"fancy-log": "^1.3.3",
|
||||||
"flow-bin": "^0.123.0",
|
"flow-bin": "^0.123.0",
|
||||||
|
"globby": "^11.0.2",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"gulp-babel": "^8.0.0",
|
"gulp-babel": "^8.0.0",
|
||||||
"gulp-filter": "^5.1.0",
|
"gulp-filter": "^5.1.0",
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import path from "path";
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import { createRequire } from "module";
|
import { createRequire } from "module";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
|
import globby from "globby";
|
||||||
|
|
||||||
const require = createRequire(import.meta.url);
|
const require = createRequire(import.meta.url);
|
||||||
|
|
||||||
@ -34,6 +35,27 @@ const tsPkgs = [
|
|||||||
...getTsPkgs("codemods"),
|
...getTsPkgs("codemods"),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
function sourceDeps(packageDir) {
|
||||||
|
const files = globby.sync(`src/**/*.ts`, {
|
||||||
|
cwd: packageDir,
|
||||||
|
onlyFiles: true,
|
||||||
|
dot: true,
|
||||||
|
ignore: ["**/node_modules/**"],
|
||||||
|
});
|
||||||
|
const result = new Set();
|
||||||
|
for (const file of files) {
|
||||||
|
const filename = path.join(packageDir, file);
|
||||||
|
const source = fs.readFileSync(filename, { encoding: "utf8" });
|
||||||
|
|
||||||
|
for (const [importSource] of source.matchAll(
|
||||||
|
/(?<=from\s*")@babel\/[^"/]+/g
|
||||||
|
)) {
|
||||||
|
result.add(importSource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
for (const { dir } of tsPkgs) {
|
for (const { dir } of tsPkgs) {
|
||||||
const pkg = require(`${dir}/package.json`);
|
const pkg = require(`${dir}/package.json`);
|
||||||
|
|
||||||
@ -43,9 +65,12 @@ for (const { dir } of tsPkgs) {
|
|||||||
if (!tsconfig.generated) continue;
|
if (!tsconfig.generated) continue;
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
const deps = [];
|
const deps = new Set([
|
||||||
if (pkg.dependencies) deps.push(...Object.keys(pkg.dependencies));
|
...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),
|
||||||
if (pkg.peerDependencies) deps.push(...Object.keys(pkg.peerDependencies));
|
...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),
|
||||||
|
// todo(flow->ts): update dependencies in package.json if dependency declared incorrectly
|
||||||
|
...sourceDeps(dir),
|
||||||
|
]);
|
||||||
|
|
||||||
const references = [];
|
const references = [];
|
||||||
for (const dep of deps) {
|
for (const dep of deps) {
|
||||||
|
|||||||
@ -5499,6 +5499,7 @@ __metadata:
|
|||||||
eslint-plugin-prettier: ^3.1.2
|
eslint-plugin-prettier: ^3.1.2
|
||||||
fancy-log: ^1.3.3
|
fancy-log: ^1.3.3
|
||||||
flow-bin: ^0.123.0
|
flow-bin: ^0.123.0
|
||||||
|
globby: ^11.0.2
|
||||||
gulp: ^4.0.2
|
gulp: ^4.0.2
|
||||||
gulp-babel: ^8.0.0
|
gulp-babel: ^8.0.0
|
||||||
gulp-filter: ^5.1.0
|
gulp-filter: ^5.1.0
|
||||||
@ -8661,9 +8662,9 @@ fsevents@^1.2.7:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"globby@npm:^11.0.1":
|
"globby@npm:^11.0.1, globby@npm:^11.0.2":
|
||||||
version: 11.0.1
|
version: 11.0.2
|
||||||
resolution: "globby@npm:11.0.1"
|
resolution: "globby@npm:11.0.2"
|
||||||
dependencies:
|
dependencies:
|
||||||
array-union: ^2.1.0
|
array-union: ^2.1.0
|
||||||
dir-glob: ^3.0.1
|
dir-glob: ^3.0.1
|
||||||
@ -8671,7 +8672,7 @@ fsevents@^1.2.7:
|
|||||||
ignore: ^5.1.4
|
ignore: ^5.1.4
|
||||||
merge2: ^1.3.0
|
merge2: ^1.3.0
|
||||||
slash: ^3.0.0
|
slash: ^3.0.0
|
||||||
checksum: e7239e9e468c3692aec31dc97b5efc13dd21edf38820baeda98118ade39f475c4ff9e7610859eb4a3c75277ca2616e371265fec3c626aba5db4335bc41c59ac7
|
checksum: d23f2a6b8897b97fb27422cde243e0fd406ebbaa821929293b27c977d169884f8112494cda4f456a51d0ec1e133e3ac703ec24bfed484e327305ea34a665eb06
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user