Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // side-effects.js
- const fs = require("fs");
- const path = require("path");
- // Путь к целевой папке
- const targetDir = path.join(__dirname, "node_modules", "@webx");
- function processPackages(dirPath) {
- // Проверяем, существует ли папка
- if (!fs.existsSync(dirPath)) {
- console.error(`Ошибка: Директория не найдена по пути: ${dirPath}`);
- return;
- }
- try {
- const files = fs.readdirSync(dirPath);
- files.forEach((file) => {
- const fullPath = path.join(dirPath, file);
- const stat = fs.statSync(fullPath);
- if (stat.isDirectory()) {
- const packageJsonPath = path.join(fullPath, "package.json");
- // Если внутри папки есть package.json, обрабатываем его
- if (fs.existsSync(packageJsonPath)) {
- modifyPackageJson(packageJsonPath, file);
- } else {
- // Если package.json нет, возможно это вложенная подпапка (вдруг там scoped-пакеты)
- processPackages(fullPath);
- }
- }
- });
- } catch (error) {
- console.error(`Ошибка при чтении директории ${dirPath}:`, error.message);
- }
- }
- function modifyPackageJson(filePath, packageName) {
- try {
- const rawData = fs.readFileSync(filePath, "utf8");
- const packageJson = JSON.parse(rawData);
- // Проверяем наличие свойства sideEffects
- if (!packageJson.hasOwnProperty("sideEffects")) {
- packageJson.sideEffects = false;
- // Записываем обновленный JSON обратно с сохранением форматирования (2 пробела)
- fs.writeFileSync(filePath, JSON.stringify(packageJson, null, 2), "utf8");
- console.log(`✅ Добавлено "sideEffects": false в пакет: @webx/${packageName}`);
- } else {
- console.log(`ℹ️ Пропущено (поле уже существует): @webx/${packageName}`);
- }
- } catch (error) {
- console.error(`❌ Не удалось обработать файл ${filePath}:`, error.message);
- }
- }
- // Запуск скрипта
- console.log("Начало обработки пакетов в node_modules/@webx...");
- processPackages(targetDir);
- console.log("Обработка завершена.");
Advertisement
Add Comment
Please, Sign In to add comment