crutch12

Add sideEffects

May 16th, 2026 (edited)
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // side-effects.js
  2.  
  3. const fs = require("fs");
  4. const path = require("path");
  5.  
  6. // Путь к целевой папке
  7. const targetDir = path.join(__dirname, "node_modules", "@webx");
  8.  
  9. function processPackages(dirPath) {
  10.     // Проверяем, существует ли папка
  11.     if (!fs.existsSync(dirPath)) {
  12.         console.error(`Ошибка: Директория не найдена по пути: ${dirPath}`);
  13.         return;
  14.     }
  15.  
  16.     try {
  17.         const files = fs.readdirSync(dirPath);
  18.  
  19.         files.forEach((file) => {
  20.             const fullPath = path.join(dirPath, file);
  21.             const stat = fs.statSync(fullPath);
  22.  
  23.             if (stat.isDirectory()) {
  24.                 const packageJsonPath = path.join(fullPath, "package.json");
  25.  
  26.                 // Если внутри папки есть package.json, обрабатываем его
  27.                 if (fs.existsSync(packageJsonPath)) {
  28.                     modifyPackageJson(packageJsonPath, file);
  29.                 } else {
  30.                     // Если package.json нет, возможно это вложенная подпапка (вдруг там scoped-пакеты)
  31.                     processPackages(fullPath);
  32.                 }
  33.             }
  34.         });
  35.     } catch (error) {
  36.         console.error(`Ошибка при чтении директории ${dirPath}:`, error.message);
  37.     }
  38. }
  39.  
  40. function modifyPackageJson(filePath, packageName) {
  41.     try {
  42.         const rawData = fs.readFileSync(filePath, "utf8");
  43.         const packageJson = JSON.parse(rawData);
  44.  
  45.         // Проверяем наличие свойства sideEffects
  46.         if (!packageJson.hasOwnProperty("sideEffects")) {
  47.             packageJson.sideEffects = false;
  48.  
  49.             // Записываем обновленный JSON обратно с сохранением форматирования (2 пробела)
  50.             fs.writeFileSync(filePath, JSON.stringify(packageJson, null, 2), "utf8");
  51.             console.log(`✅ Добавлено "sideEffects": false в пакет: @webx/${packageName}`);
  52.         } else {
  53.             console.log(`ℹ️ Пропущено (поле уже существует): @webx/${packageName}`);
  54.         }
  55.     } catch (error) {
  56.         console.error(`❌ Не удалось обработать файл ${filePath}:`, error.message);
  57.     }
  58. }
  59.  
  60. // Запуск скрипта
  61. console.log("Начало обработки пакетов в node_modules/@webx...");
  62. processPackages(targetDir);
  63. console.log("Обработка завершена.");
  64.  
Advertisement
Add Comment
Please, Sign In to add comment