Задать вопрос
VK_31
@VK_31
Постоянно учусь

Как решить конфликты имен переменных после минификации?

Собираю проект на реакте и после его публикации в проде возникают ошибки
Identifier 'Rv' has already been declared (at index.js:1:1)
или
Cannot set properties of null (settings 'ItemSlider')
из-за того, что рекламный скрипт использует те же имена переменных. Решаю исключением имен переменных из сборки, но через некоторое время в рекламном скрипте появляются новые имена и ошибка повторяется. Приходится снова лезть в консоль, смотреть конфликты и пересобирать.

Вот конфиг vite
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  build: {
    minify: 'terser',
    terserOptions: {
      mangle: {
        reserved: ['st', 'ga', 'pr', 'V', '$', 'Hw', 'Ew', 'Gw', 'Rv', 't', 'e', 'Pv'],
      },
    },
  }
});


Есть ли способ решить этот вопрос однозначно, например добавлять префиксы к переменным при минификации или изолировать как-то сборку?
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Средний 14 комментариев
Решения вопроса 1
VK_31
@VK_31 Автор вопроса
Постоянно учусь
Vite по дефолту собирает с глобальными переменными и изолирует код, используя type="module" в теге script. У меня type сломался из-за ошибки верстки, поэтому и смешалось все в кучу.

Еще сработал вариант с iife в настройках сборки:
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  build: {
    rollupOptions: {
      output: {
        format: "iife",
      }
    }
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы