From 516de853a59055db7b3554b7cc10a2a5b92b5533 Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Thu, 14 May 2026 09:44:00 -0400 Subject: [PATCH 1/3] Add script to update package-lock.json --- README.md | 6 ++++ package.json | 1 + scripts/delete-temp-dirs.cjs | 64 +++++++++++++++++++++++------------- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 19095041..0360e082 100644 --- a/README.md +++ b/README.md @@ -253,6 +253,12 @@ git merge template/main --allow-unrelated-histories For more information, read [the instructions on the wiki](https://github.com/paranext/paranext-extension-template/wiki/Merging-Template-Changes-into-Your-Extension). +After updating this extension from the template, clear all temp/cache files and regenerate the extension's `package-lock.json` with this command: + +```bash +npm run core:reinstall +``` + **Note:** The merge/squash commits created when updating this repo from the template are important; Git uses them to compare the files for future updates. If you edit this repo's Git history, please preserve these commits (do not squash them, for example) to avoid duplicated merge conflicts in the future. ## Special features in this project diff --git a/package.json b/package.json index 48153936..6a400e61 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "core:start": "npm --prefix ../paranext-core start", "core:stop": "npm --prefix ../paranext-core stop", "core:reset": "npm run core:stop && node ./scripts/delete-temp-dirs.cjs --core --ext", + "core:reinstall": "npm run core:reset && node ./scripts/delete-temp-dirs.cjs --npm && npm run core:update && npm i", "core:install": "npm --prefix ../paranext-core install", "core:pull": "git -C ../paranext-core pull --ff-only", "core:update": "npm run core:pull && npm run core:install" diff --git a/scripts/delete-temp-dirs.cjs b/scripts/delete-temp-dirs.cjs index 5eee21f4..83423195 100644 --- a/scripts/delete-temp-dirs.cjs +++ b/scripts/delete-temp-dirs.cjs @@ -11,24 +11,41 @@ const path = require('path'); * - `paranext-core/dev-appdata/`, which includes `installed-extensions/` */ +// Check command-line arguments + +const hasCoreFlag = process.argv.includes('--core'); +const hasExtFlag = process.argv.includes('--ext'); +const hasNpmFlag = process.argv.includes('--npm'); + +if (!hasCoreFlag && !hasExtFlag && !hasNpmFlag) { + console.error('Usage: node delete-temp-dirs.cjs [--core] [--ext] [--npm]'); + console.error(' --core Delete Electron and core cache (Electron, dev-appdata)'); + console.error(' --ext Delete extension directories (coverage, dist, src/temp-build)'); + console.error(' --npm Delete both node_modules and extension package-lock.json'); + process.exit(1); +} + // Define directory lists -/* eslint-disable no-nested-ternary */ -let electronParent = - process.platform === 'win32' - ? process.env.APPDATA - : process.platform === 'linux' - ? process.env.XDG_CONFIG_HOME - : ''; -if (!electronParent && process.env.HOME) { +let electronParent = ''; +if (hasCoreFlag) { + /* eslint-disable no-nested-ternary */ electronParent = - process.platform === 'linux' - ? path.join(process.env.HOME, '.config') - : process.platform === 'darwin' - ? path.join(process.env.HOME, 'Library', 'Application Support') + process.platform === 'win32' + ? process.env.APPDATA + : process.platform === 'linux' + ? process.env.XDG_CONFIG_HOME : ''; + if (!electronParent && process.env.HOME) { + electronParent = + process.platform === 'linux' + ? path.join(process.env.HOME, '.config') + : process.platform === 'darwin' + ? path.join(process.env.HOME, 'Library', 'Application Support') + : ''; + } + /* eslint-enable no-nested-ternary */ } -/* eslint-enable no-nested-ternary */ const CORE_DIRS = [ electronParent ? path.join(electronParent, 'Electron') : '', @@ -41,6 +58,12 @@ const EXT_DIRS = [ path.join(__dirname, '..', 'src', 'temp-build'), ]; +const NPM_PATHS = [ + path.join(__dirname, '..', '..', 'paranext-core', 'node_modules'), + path.join(__dirname, '..', 'node_modules'), + path.join(__dirname, '..', 'package-lock.json'), +]; + /** * Delete a directory if it exists * @@ -67,16 +90,6 @@ function deleteDirectory(dirPath) { // Delete directories based on command-line flags try { - const hasCoreFlag = process.argv.includes('--core'); - const hasExtFlag = process.argv.includes('--ext'); - - if (!hasCoreFlag && !hasExtFlag) { - console.error('Usage: node delete-temp-dirs.cjs [--core] [--ext]'); - console.error(' --core Delete AppData and core cache directories (Electron, dev-appdata)'); - console.error(' --ext Delete extension directories (coverage, dist, src/temp-build)'); - process.exit(1); - } - if (hasCoreFlag) { console.log('Deleting core cache directories...'); CORE_DIRS.forEach(deleteDirectory); @@ -87,6 +100,11 @@ try { EXT_DIRS.forEach(deleteDirectory); } + if (hasNpmFlag) { + console.log('Deleting node_modules and package-lock.json...'); + NPM_PATHS.forEach(deleteDirectory); + } + console.log('Complete!'); process.exit(0); } catch (error) { From 54f7be62bb55e0df68652f505872b1af282b14af Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Thu, 14 May 2026 10:07:44 -0400 Subject: [PATCH 2/3] Make more general --- package.json | 4 +-- ...te-temp-dirs.cjs => delete-temp-files.cjs} | 32 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) rename scripts/{delete-temp-dirs.cjs => delete-temp-files.cjs} (75%) diff --git a/package.json b/package.json index 6a400e61..c65b9917 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,8 @@ "test:coverage": "jest --coverage", "core:start": "npm --prefix ../paranext-core start", "core:stop": "npm --prefix ../paranext-core stop", - "core:reset": "npm run core:stop && node ./scripts/delete-temp-dirs.cjs --core --ext", - "core:reinstall": "npm run core:reset && node ./scripts/delete-temp-dirs.cjs --npm && npm run core:update && npm i", + "core:reset": "npm run core:stop && node ./scripts/delete-temp-files.cjs --core --ext", + "core:reinstall": "npm run core:reset && node ./scripts/delete-temp-files.cjs --npm && npm run core:update && npm i", "core:install": "npm --prefix ../paranext-core install", "core:pull": "git -C ../paranext-core pull --ff-only", "core:update": "npm run core:pull && npm run core:install" diff --git a/scripts/delete-temp-dirs.cjs b/scripts/delete-temp-files.cjs similarity index 75% rename from scripts/delete-temp-dirs.cjs rename to scripts/delete-temp-files.cjs index 83423195..2bc2d063 100644 --- a/scripts/delete-temp-dirs.cjs +++ b/scripts/delete-temp-files.cjs @@ -2,8 +2,8 @@ const fs = require('fs'); const path = require('path'); /** - * Cross-platform script to delete temporary and cache directories. Run this if Platform.Bible is - * holding on to outdated resources, such as localization strings, project data, or WebView ids. + * Cross-platform script to delete temporary and cache paths. Run this if Platform.Bible is holding + * on to outdated resources, such as localization strings, project data, or WebView ids. * * Warning: The `--core` flag deletes: * @@ -19,7 +19,7 @@ const hasNpmFlag = process.argv.includes('--npm'); if (!hasCoreFlag && !hasExtFlag && !hasNpmFlag) { console.error('Usage: node delete-temp-dirs.cjs [--core] [--ext] [--npm]'); - console.error(' --core Delete Electron and core cache (Electron, dev-appdata)'); + console.error(' --core Delete Electron and core caches (Electron, dev-appdata)'); console.error(' --ext Delete extension directories (coverage, dist, src/temp-build)'); console.error(' --npm Delete both node_modules and extension package-lock.json'); process.exit(1); @@ -65,44 +65,44 @@ const NPM_PATHS = [ ]; /** - * Delete a directory if it exists + * Delete a path if it exists * - * @param {string} dirPath - The directory path to delete + * @param {string} pathToDelete - The path to delete */ -function deleteDirectory(dirPath) { - if (!dirPath) { +function deletePath(pathToDelete) { + if (!pathToDelete) { console.log('⊘ Skipping empty path'); return; } try { - if (fs.existsSync(dirPath)) { - fs.rmSync(dirPath, { recursive: true, force: true }); - console.log(`✓ Deleted ${dirPath}`); + if (fs.existsSync(pathToDelete)) { + fs.rmSync(pathToDelete, { recursive: true, force: true }); + console.log(`✓ Deleted ${pathToDelete}`); } else { - console.log(`⊘ ${dirPath} does not exist`); + console.log(`⊘ ${pathToDelete} does not exist`); } } catch (error) { - console.error(`✗ Failed to delete ${dirPath}:`, error.message); + console.error(`✗ Failed to delete ${pathToDelete}:`, error.message); } } -// Delete directories based on command-line flags +// Delete paths based on command-line flags try { if (hasCoreFlag) { console.log('Deleting core cache directories...'); - CORE_DIRS.forEach(deleteDirectory); + CORE_DIRS.forEach(deletePath); } if (hasExtFlag) { console.log('Deleting extension directories...'); - EXT_DIRS.forEach(deleteDirectory); + EXT_DIRS.forEach(deletePath); } if (hasNpmFlag) { console.log('Deleting node_modules and package-lock.json...'); - NPM_PATHS.forEach(deleteDirectory); + NPM_PATHS.forEach(deletePath); } console.log('Complete!'); From 57918600e5872b79d43da477b13a5fc4afbcf33d Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Thu, 14 May 2026 10:27:24 -0400 Subject: [PATCH 3/3] Fix usage text --- scripts/delete-temp-files.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/delete-temp-files.cjs b/scripts/delete-temp-files.cjs index 2bc2d063..f88cfb63 100644 --- a/scripts/delete-temp-files.cjs +++ b/scripts/delete-temp-files.cjs @@ -18,7 +18,7 @@ const hasExtFlag = process.argv.includes('--ext'); const hasNpmFlag = process.argv.includes('--npm'); if (!hasCoreFlag && !hasExtFlag && !hasNpmFlag) { - console.error('Usage: node delete-temp-dirs.cjs [--core] [--ext] [--npm]'); + console.error('Usage: node delete-temp-files.cjs [--core] [--ext] [--npm]'); console.error(' --core Delete Electron and core caches (Electron, dev-appdata)'); console.error(' --ext Delete extension directories (coverage, dist, src/temp-build)'); console.error(' --npm Delete both node_modules and extension package-lock.json');