summary refs log tree commit diff
path: root/bundle/scripts/depclean.js
blob: 6d9a2260507e3a646a8686abf569fc16644d7b6d (plain) (blame)
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
const path = require("path");
const fs = require("fs");
const { env } = require("process");
const { execSync } = require("child_process");
const { argv, stdout, exit } = require("process");

const { execIn, getLines, parts } = require('./utils');

const bundleRequired = ["@ovos-media/ts-transform-paths"];
const removeModules = argv.includes("cleanup");

parts.forEach((part) => {
	console.log(`Installing all packages for ${part}...`);
	execIn("npm i", path.join(__dirname, "..", "..", part));
});

parts.forEach((part) => {
	let partDir = path.join(__dirname, "..", "..", part);
	let distDir = path.join(partDir, "dist");
	let start = 0;
	start = getLines(
		execIn("npm ls --parseable --package-lock-only -a", partDir)
	);
	if (fs.existsSync(distDir))
		fs.rmSync(distDir, {
			recursive: true,
			force: true,
		});
	let x = {
		dependencies: [],
		devDependencies: [],
		invalidDirs: [],
		invalidFiles: [],
		missing: [],
		using: [],
	};
	x = JSON.parse(execIn("npx depcheck --json", partDir).stdout);

	fs.writeFileSync(
		path.join(__dirname, "..", `depclean.out.${part}.json`),
		JSON.stringify(x, null, "\t"),
		{ encoding: "utf8" }
	);

	let depsToRemove = x.dependencies.join(" ");
	if (depsToRemove) execIn(`npm r --save ${depsToRemove}`, partDir);

	depsToRemove = x.devDependencies.join(" ");
	if (depsToRemove) execIn(`npm r --save --dev ${depsToRemove}`, partDir);

	if (removeModules && fs.existsSync(path.join(partDir, "node_modules")))
		fs.rmSync(path.join(partDir, "node_modules"), {
			recursive: true,
			force: true,
		});
	let end = getLines(
		execIn("npm ls --parseable --package-lock-only -a", partDir)
	);
	console.log(`${part}: ${start} -> ${end} (diff: ${start - end})`);
});
console.log("Installing required packages for bundle...");

execIn(`npm i --save ${bundleRequired.join(" ")}`, path.join(__dirname, ".."));