一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
37 行
850 B
JavaScript
37 行
850 B
JavaScript
const { readdir, stat, rm } = require('fs/promises');
|
|
const { resolve } = require('path');
|
|
|
|
const rootDir = resolve(__dirname, '../..');
|
|
const packageDir = `${rootDir}/packages`;
|
|
|
|
const main = async () => {
|
|
const itemNames = await readdir(packageDir);
|
|
|
|
const toDeletes = [];
|
|
|
|
for (const itemName of itemNames) {
|
|
const fullPath = `${packageDir}/${itemName}`;
|
|
const s = await stat(fullPath);
|
|
if (!s.isDirectory()) continue;
|
|
|
|
const nodeModules = `${fullPath}/node_modules`;
|
|
toDeletes.push(nodeModules);
|
|
}
|
|
|
|
toDeletes.push(`${rootDir}/node_modules`);
|
|
|
|
const promises = [];
|
|
|
|
for (const toDelete of toDeletes) {
|
|
console.info(`Delete: ${toDelete}`);
|
|
promises.push(rm(toDelete, { force: true, recursive: true }));
|
|
}
|
|
|
|
await Promise.all(promises);
|
|
};
|
|
|
|
main().catch((error) => {
|
|
console.error('Fatal error', error);
|
|
process.exit(1);
|
|
});
|