UNPKG

@react-native/core-cli-utils

Version:
141 lines (139 loc) 4.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.deleteDirectory = deleteDirectory; exports.deleteDirectoryContents = deleteDirectoryContents; exports.deleteTmpDirectoryContents = deleteTmpDirectoryContents; exports.tasks = void 0; var _utils = require("./utils"); var _execa = _interopRequireDefault(require("execa")); var _fs = require("fs"); var _os = _interopRequireDefault(require("os")); var _path = _interopRequireDefault(require("path")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const FIRST = 1, SECOND = 2; const rmrf = (pathname) => { if (!(0, _fs.existsSync)(pathname)) { return; } (0, _fs.rm)(pathname, { force: true, maxRetries: 3, recursive: true, }); }; function deleteDirectoryContents(directory, filePattern) { return async function deleteDirectoryContentsAction() { const base = _path.default.dirname(directory); const files = (0, _fs.readdirSync)(base).filter((filename) => filePattern.test(filename) ); for (const filename of files) { rmrf(_path.default.join(base, filename)); } }; } function deleteDirectory(directory) { return async function cleanDirectoryAction() { rmrf(directory); }; } function deleteTmpDirectoryContents(filepattern) { return deleteDirectoryContents(_os.default.tmpdir(), filepattern); } const platformGradlew = _utils.isWindows ? "gradlew.bat" : "gradlew"; const tasks = (exports.tasks = { android: (androidSrcDir, opts) => ({ validate: (0, _utils.task)(FIRST, "Check gradlew is available", () => { (0, _utils.assertDependencies)( (0, _utils.isOnPath)(platformGradlew, "Gradle wrapper") ); }), run: (0, _utils.task)(SECOND, "🧹 Clean Gradle cache", () => { const gradlew = _path.default.join( androidSrcDir ?? "android", platformGradlew ); const script = _path.default.basename(gradlew); const cwd = _path.default.dirname(gradlew); return (0, _execa.default)( _utils.isWindows ? script : "./" + script, ["clean"], { cwd, ...opts, } ); }), }), metro: () => ({ metro: (0, _utils.task)( FIRST, "🧹 Clean Metro cache", deleteTmpDirectoryContents(/^metro-.+/) ), haste: (0, _utils.task)( FIRST, "🧹 Clean Haste cache", deleteTmpDirectoryContents(/^haste-map-.+/) ), react_native: (0, _utils.task)( FIRST, "🧹 Clean React Native cache", deleteTmpDirectoryContents(/^react-.+/) ), }), npm: (projectRootDir) => ({ node_modules: (0, _utils.task)( FIRST, "🧹 Clean node_modules", deleteDirectory(_path.default.join(projectRootDir, "node_modules")) ), verify_cache: (0, _utils.task)(SECOND, "🔬 Verify npm cache", (opts) => (0, _execa.default)("npm", ["cache", "verify"], { cwd: projectRootDir, ...opts, }) ), }), watchman: (projectRootDir) => ({ stop: (0, _utils.task)(FIRST, "✋ Stop Watchman", (opts) => (0, _execa.default)( _utils.isWindows ? "tskill" : "killall", ["watchman"], { cwd: projectRootDir, ...opts, } ) ), cache: (0, _utils.task)(SECOND, "🧹 Delete Watchman cache", (opts) => (0, _execa.default)("watchman", ["watch-del-all"], { cwd: projectRootDir, ...opts, }) ), }), yarn: (projectRootDir) => ({ clean: (0, _utils.task)(FIRST, "🧹 Clean Yarn cache", (opts) => (0, _execa.default)("yarn", ["cache", "clean"], { cwd: projectRootDir, ...opts, }) ), }), }); if (_utils.isMacOS) { tasks.cocoapods = (projectRootDir) => ({ clean: (0, _utils.task)(FIRST, "🧹 Clean CocoaPods pod cache", (opts) => (0, _execa.default)("bundle", ["exec", "pod", "deintegrate"], { cwd: projectRootDir, ...opts, }) ), }); }