UNPKG

@ts-dev-tools/core

Version:
56 lines (55 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SymlinkDependenciesService = void 0; var fs_1 = require("fs"); var path_1 = require("path"); var PackageJson_1 = require("./PackageJson"); var PluginService_1 = require("./PluginService"); var SymlinkDependenciesService = /** @class */ (function () { function SymlinkDependenciesService() { } SymlinkDependenciesService.executeSymlinking = function (absoluteProjectDir) { console.info("Symlinking dev dependencies..."); var installedPlugins = PluginService_1.PluginService.getInstalledPlugins(absoluteProjectDir); for (var _i = 0, installedPlugins_1 = installedPlugins; _i < installedPlugins_1.length; _i++) { var plugin = installedPlugins_1[_i]; SymlinkDependenciesService.symlinkPluginDependencies(absoluteProjectDir, plugin); } console.info("Symlinking dev dependencies done!"); }; SymlinkDependenciesService.symlinkPluginDependencies = function (absoluteProjectDir, plugin) { var pluginDependencies = SymlinkDependenciesService.getPluginDependencies(plugin); var pluginDependenciesPath = (0, path_1.join)(plugin.path, SymlinkDependenciesService.DEPENDENCIES_FOLDER); if (!(0, fs_1.existsSync)(pluginDependenciesPath)) { throw new Error("Plugin dependencies folder not found: ".concat(pluginDependenciesPath)); } for (var _i = 0, pluginDependencies_1 = pluginDependencies; _i < pluginDependencies_1.length; _i++) { var pluginDependency = pluginDependencies_1[_i]; var pluginDependencyPath = (0, path_1.join)(pluginDependenciesPath, pluginDependency); if (!(0, fs_1.existsSync)(pluginDependencyPath)) { continue; } var projectDependencyPath = (0, path_1.join)(absoluteProjectDir, SymlinkDependenciesService.DEPENDENCIES_FOLDER); var projectPluginDependencyPath = (0, path_1.join)(projectDependencyPath, pluginDependency); if ((0, fs_1.existsSync)(projectPluginDependencyPath)) { continue; } console.info("- Symlinking ".concat(pluginDependency)); SymlinkDependenciesService.symlinkDependency(pluginDependencyPath, projectPluginDependencyPath); } }; SymlinkDependenciesService.getPluginDependencies = function (plugin) { var pluginPackageJson = PackageJson_1.PackageJson.fromDirPath(plugin.path); return pluginPackageJson.getDependenciesPackageNames(); }; SymlinkDependenciesService.symlinkDependency = function (pluginDependencyPath, projectPluginDependencyPath) { var pluginDependencyParentFolder = (0, path_1.join)(projectPluginDependencyPath, ".."); if (!(0, fs_1.existsSync)(pluginDependencyParentFolder)) { (0, fs_1.mkdirSync)(pluginDependencyParentFolder, { recursive: true }); } (0, fs_1.symlinkSync)(pluginDependencyPath, projectPluginDependencyPath); }; SymlinkDependenciesService.DEPENDENCIES_FOLDER = "node_modules"; return SymlinkDependenciesService; }()); exports.SymlinkDependenciesService = SymlinkDependenciesService;