diff --git a/build b/build index a2026f9a60..2288f828fe 100755 --- a/build +++ b/build @@ -11,7 +11,7 @@ try { var child_process = require('child_process'); var fs = require('fs'); -var force = process.argv[2] === '--force'; +var force = ['--force', 'force', '--full', 'full'].includes(process.argv[2]); process.chdir(__dirname); diff --git a/tools/build-utils.js b/tools/build-utils.js index 193e3a1e64..0f1ee775b9 100644 --- a/tools/build-utils.js +++ b/tools/build-utils.js @@ -21,12 +21,28 @@ function needsSucrase(source, dest, path = "") { if (!path.includes(".")) { // probably dir try { - const files = fs.readdirSync(source + path); - for (const file of files) { + const sourceFiles = fs.readdirSync(source + path); + for (const file of sourceFiles) { if (needsSucrase(source, dest, path + "/" + file)) { return true; } } + if (path.endsWith('/chat-plugins') || path.includes('/mods/')) { + const destFiles = fs.readdirSync(dest + path); + for (const file of destFiles) { + if (file.endsWith('.js') && !sourceFiles.includes(file.slice(0, -2) + 'ts') && !sourceFiles.includes(file)) { + fs.unlinkSync(dest + path + "/" + file); + } + } + } + if (path.endsWith('/mods')) { + const destFolders = fs.readdirSync(dest + path); + for (const destFolder of destFolders) { + if (!destFolder.includes('.') && !sourceFiles.includes(destFolder)) { + fs.rmSync(dest + path + "/" + destFolder, {recursive: true}); + } + } + } } catch (e) { // not dir }