mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 18:12:29 +08:00

extra note on mermaid: that should be packed by webpack now, so we just need to move it to devDeps and and we should be good
79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import fs from "fs-extra";
|
|
import path from "path";
|
|
|
|
function main() {
|
|
if (process.argv.length !== 3) {
|
|
console.error("More than one path was supplied as argument. Aborting.");
|
|
process.exit(1);
|
|
}
|
|
|
|
const basePath = process.argv[2];
|
|
|
|
if (!fs.existsSync(basePath)) {
|
|
console.error(`Supplied path '${basePath}' does not exist. Aborting.`)
|
|
process.exit(1);
|
|
}
|
|
|
|
cleanupNodeModules(basePath);
|
|
}
|
|
|
|
function cleanupNodeModules(basePath: string) {
|
|
const nodeModulesContent = fs.readdirSync(path.join(basePath, "./node_modules"), { recursive: true, withFileTypes: true });
|
|
//const libDir = fs.readdirSync(path.join(basePath, "./libraries"), { recursive: true, withFileTypes: true });
|
|
|
|
/**
|
|
* Delete unnecessary folders
|
|
*/
|
|
const filterableDirs = new Set([
|
|
"demo",
|
|
"demos",
|
|
"doc",
|
|
"docs",
|
|
"example",
|
|
"examples",
|
|
"test",
|
|
"tests"
|
|
]);
|
|
|
|
nodeModulesContent
|
|
.filter(el => el.isDirectory() && filterableDirs.has(el.name))
|
|
.forEach(dir => fs.removeSync(path.join(dir.parentPath, dir.name)));
|
|
|
|
|
|
/**
|
|
* Delete unnecessary files based on file extension
|
|
* TODO filter out useless (README).md files
|
|
*/
|
|
const filterableFileExt = new Set([
|
|
"ts",
|
|
"map"
|
|
]);
|
|
|
|
nodeModulesContent
|
|
// TriliumNextTODO: check if we can improve this naive file ext matching, without introducing any additional dependency
|
|
.filter(el => el.isFile() && filterableFileExt.has(el.name.split(".").at(-1) || ""))
|
|
.forEach(file => fs.removeSync(path.join(file.parentPath, file.name)));
|
|
|
|
|
|
/**
|
|
* Delete specific unnecessary folders
|
|
* TODO: use basePath
|
|
* TODO: check if we want removeSync to throw an error, if path does not exist anymore -> currently it will silently fail
|
|
*/
|
|
const extraFoldersDelete = new Set([
|
|
'build/node_modules/@excalidraw/excalidraw/dist/dev',
|
|
'build/node_modules/boxicons/svg',
|
|
'build/node_modules/boxicons/node_modules',
|
|
'build/node_modules/boxicons/src',
|
|
'build/node_modules/boxicons/iconjar',
|
|
'build/node_modules/@jimp/plugin-print/fonts',
|
|
'build/node_modules/jimp/dist/browser'
|
|
]);
|
|
|
|
nodeModulesContent
|
|
.filter(el => el.isDirectory() && extraFoldersDelete.has(path.join(el.parentPath, el.name)))
|
|
.forEach(dir => fs.removeSync(path.join(dir.parentPath, dir.name)))
|
|
|
|
}
|
|
|
|
main() |