@ts-dev-tools/core
Version:
TS dev tools Core
56 lines (55 loc) • 3.21 kB
JavaScript
;
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;