UNPKG

@nx/js

Version:

The JS plugin for Nx contains executors and generators that provide the best experience for developing JavaScript and TypeScript projects.

56 lines (55 loc) 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.watchTaskProjectsPackageJsonFileChanges = watchTaskProjectsPackageJsonFileChanges; exports.watchTaskProjectsFileChangesForAssets = watchTaskProjectsFileChangesForAssets; const devkit_1 = require("@nx/devkit"); const client_1 = require("nx/src/daemon/client/client"); const path_1 = require("path"); async function watchTaskProjectsPackageJsonFileChanges(taskInfos, callback) { const projects = []; const packageJsonTaskInfoMap = new Map(); taskInfos.forEach((t) => { projects.push(t.context.projectName); packageJsonTaskInfoMap.set((0, path_1.join)(t.options.projectRoot, 'package.json'), t); }); const unregisterFileWatcher = await client_1.daemonClient.registerFileWatcher({ watchProjects: projects }, (err, data) => { if (err === 'closed') { devkit_1.logger.error(`Watch error: Daemon closed the connection`); process.exit(1); } else if (err) { devkit_1.logger.error(`Watch error: ${err?.message ?? 'Unknown'}`); } else { const changedTasks = []; data.changedFiles.forEach((file) => { if (packageJsonTaskInfoMap.has(file.path)) { changedTasks.push(packageJsonTaskInfoMap.get(file.path)); } }); if (changedTasks.length) { callback(changedTasks); } } }); return () => unregisterFileWatcher(); } async function watchTaskProjectsFileChangesForAssets(taskInfos) { const unregisterFileWatcher = await client_1.daemonClient.registerFileWatcher({ watchProjects: taskInfos.map((t) => t.context.projectName), includeDependentProjects: true, includeGlobalWorkspaceFiles: true, }, (err, data) => { if (err === 'closed') { devkit_1.logger.error(`Watch error: Daemon closed the connection`); process.exit(1); } else if (err) { devkit_1.logger.error(`Watch error: ${err?.message ?? 'Unknown'}`); } else { taskInfos.forEach((t) => t.assetsHandler.processWatchEvents(data.changedFiles)); } }); return () => unregisterFileWatcher(); }