UNPKG

@rnv/engine-core

Version:
236 lines 12.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var path_1 = tslib_1.__importDefault(require("path")); var core_1 = require("@rnv/core"); function clearWindowsCacheFiles() { var opts = { detached: false, stdio: 'ignore', }; // TODO using executeAsync for these scripts returns an error, so this is just a temporary workaround // This should resolve as it used internally by @react-native-community/cli // eslint-disable-next-line global-require var child_process_1 = require('child_process'); // Temporary cache files located in C:/Users/<UserName>/AppData/Local/Temp child_process_1.spawn('cmd.exe', ['/C', 'del /q/f/s %TEMP%\\*'], opts); // NuGet cache child_process_1.spawn('cmd.exe', ['/C', 'dotnet nuget locals all --clear'], opts); // Yarn/NPM cache child_process_1.spawn('cmd.exe', ['/C', 'npm cache clean --force & yarn cache clean --all'], opts); // Watchman cache child_process_1.spawn('cmd.exe', ['/C', 'watchman watch-del-all'], opts); return true; } exports.default = (0, core_1.createTask)({ description: 'Automatically removes all node_modules and lock in your project and its dependencies', fn: function (_a) { var ctx = _a.ctx; return tslib_1.__awaiter(void 0, void 0, void 0, function () { var skipQuestion, pathsToRemove, localFiles, immediateNodeModuleDir, pkgLock, yarnLock, packagesFolder, buildDirs, local1, local2, local3, answers, confirm_1, confirmBuilds, confirmLocals, confirmCache, confirmCache, e_1; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: skipQuestion = ctx.program.opts().ci; pathsToRemove = []; localFiles = []; immediateNodeModuleDir = path_1.default.join(ctx.paths.project.dir, 'node_modules'); pkgLock = path_1.default.join(ctx.paths.project.dir, 'package-lock.json'); if ((0, core_1.fsExistsSync)(immediateNodeModuleDir)) { pathsToRemove.push(immediateNodeModuleDir); } if ((0, core_1.fsExistsSync)(pkgLock)) pathsToRemove.push(pkgLock); yarnLock = path_1.default.join(ctx.paths.project.dir, 'yarn.lock'); if ((0, core_1.fsExistsSync)(yarnLock)) { pathsToRemove.push(yarnLock); } packagesFolder = path_1.default.join(ctx.paths.project.dir, 'packages'); if ((0, core_1.fsExistsSync)(packagesFolder)) { (0, core_1.fsReaddirSync)(packagesFolder).forEach(function (dir) { if (dir === '.DS_Store') { var pth = path_1.default.join(packagesFolder, dir); if ((0, core_1.fsExistsSync)(pth)) { pathsToRemove.push(pth); } } else { var pth2 = path_1.default.join(packagesFolder, dir, 'node_modules'); if ((0, core_1.fsExistsSync)(pth2)) { pathsToRemove.push(pth2); } var pth3 = path_1.default.join(packagesFolder, dir, 'package-lock.json'); if ((0, core_1.fsExistsSync)(pth3)) { pathsToRemove.push(pth3); } var pth4 = path_1.default.join(packagesFolder, dir, 'yarn.lock'); if ((0, core_1.fsExistsSync)(pth4)) { pathsToRemove.push(pth4); } var pth5 = path_1.default.join(packagesFolder, dir, 'dist'); if ((0, core_1.fsExistsSync)(pth5)) { pathsToRemove.push(pth5); } } }); } buildDirs = []; if ((0, core_1.fsExistsSync)(ctx.paths.project.builds.dir)) { buildDirs.push(ctx.paths.project.builds.dir); } if ((0, core_1.fsExistsSync)(ctx.paths.project.assets.dir)) { buildDirs.push(ctx.paths.project.assets.dir); } local1 = path_1.default.join(ctx.paths.project.dir, '.DS_Store'); if ((0, core_1.fsExistsSync)(local1)) localFiles.push(local1); local2 = path_1.default.join(ctx.paths.project.dir, 'renative.local.json'); if ((0, core_1.fsExistsSync)(local2)) localFiles.push(local2); local3 = path_1.default.join(ctx.paths.project.dir, 'metro.config.local.js'); if ((0, core_1.fsExistsSync)(local3)) localFiles.push(local3); answers = { modules: false, builds: false, cache: false, platformBuilds: false, platformAssets: false, distAndLib: false, gitIgnore: false, nothingToClean: !skipQuestion, locals: false, }; if (!pathsToRemove.length) return [3 /*break*/, 3]; if (!!skipQuestion) return [3 /*break*/, 2]; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: 'confirm', type: 'confirm', message: "Do you want to remove node_module related files/folders? \n".concat((0, core_1.chalk)().red(pathsToRemove.join('\n'))), })]; case 1: confirm_1 = (_b.sent()).confirm; answers.modules = confirm_1; if (confirm_1) answers.nothingToClean = false; return [3 /*break*/, 3]; case 2: answers.modules = true; _b.label = 3; case 3: if (!buildDirs.length) return [3 /*break*/, 6]; if (!!skipQuestion) return [3 /*break*/, 5]; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: 'confirmBuilds', type: 'confirm', message: "Do you want to clean your platformBuilds and platformAssets? \n".concat((0, core_1.chalk)().red(buildDirs.join('\n'))), })]; case 4: confirmBuilds = (_b.sent()).confirmBuilds; answers.builds = confirmBuilds; if (confirmBuilds) answers.nothingToClean = false; return [3 /*break*/, 6]; case 5: answers.builds = true; _b.label = 6; case 6: if (!localFiles.length) return [3 /*break*/, 9]; if (!!skipQuestion) return [3 /*break*/, 8]; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: 'confirmLocals', type: 'confirm', message: "Do you want to clean local files? \n".concat((0, core_1.chalk)().red(localFiles.join('\n'))), })]; case 7: confirmLocals = (_b.sent()).confirmLocals; answers.locals = confirmLocals; if (confirmLocals) answers.nothingToClean = false; return [3 /*break*/, 9]; case 8: answers.locals = true; _b.label = 9; case 9: if (!!skipQuestion) return [3 /*break*/, 11]; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: 'confirmCache', type: 'confirm', message: 'Do you want to clean your npm/bundler cache?', })]; case 10: confirmCache = (_b.sent()).confirmCache; answers.cache = confirmCache; if (confirmCache) answers.nothingToClean = false; return [3 /*break*/, 12]; case 11: answers.cache = true; _b.label = 12; case 12: if (!!skipQuestion) return [3 /*break*/, 14]; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: 'confirmCache', type: 'confirm', message: 'Do you want to clean your platformBuilds', })]; case 13: confirmCache = (_b.sent()).confirmCache; answers.cache = confirmCache; if (confirmCache) answers.nothingToClean = false; return [3 /*break*/, 15]; case 14: answers.cache = true; _b.label = 15; case 15: //git clean -f -d if (answers.nothingToClean) { (0, core_1.logToSummary)('Nothing to clean'); return [2 /*return*/, true]; } if (!answers.modules) return [3 /*break*/, 17]; return [4 /*yield*/, (0, core_1.removeDirs)(pathsToRemove)]; case 16: _b.sent(); _b.label = 17; case 17: if (!answers.builds) return [3 /*break*/, 19]; return [4 /*yield*/, (0, core_1.removeDirs)(buildDirs)]; case 18: _b.sent(); _b.label = 19; case 19: if (!answers.locals) return [3 /*break*/, 21]; return [4 /*yield*/, (0, core_1.removeDirs)(localFiles)]; case 20: _b.sent(); _b.label = 21; case 21: if (!answers.cache) return [3 /*break*/, 27]; if (!core_1.isSystemWin) return [3 /*break*/, 22]; clearWindowsCacheFiles(); return [3 /*break*/, 27]; case 22: _b.trys.push([22, 24, , 25]); return [4 /*yield*/, (0, core_1.executeAsync)('watchman watch-del-all')]; case 23: _b.sent(); return [3 /*break*/, 25]; case 24: e_1 = _b.sent(); (0, core_1.logDebug)('watchman not installed. skipping'); return [3 /*break*/, 25]; case 25: return [4 /*yield*/, (0, core_1.executeAsync)('npx rimraf -I $TMPDIR/metro-* && npx rimraf -I $TMPDIR/react-* && npx rimraf -I $TMPDIR/haste-*')]; case 26: _b.sent(); _b.label = 27; case 27: return [2 /*return*/, true]; } }); }); }, task: core_1.RnvTaskName.clean, isGlobalScope: true, }); //# sourceMappingURL=taskClean.js.map