Vite + React: Как создать файл конфигурации собранного приложения?

Ссылка скопирована
1 ответ

Делаю небольшое веб-приложение для организации на React, в роли сборщика Vite. Работать будет в браузере.

Есть задача сделать в уже собранном проекте возможность задавать конфигурацию. Что-то типа файла settings.js в корне проекта, в котором прописаны какие-то пути или настройки. Это нужно, например, чтобы отдать собранный проект админу организации, а он, в зависимости от локальных настроек, заполнил конфигурационный файл необходимыми данными. Или, чтобы можно было, не меняя исходники, отдать проект в другую организацию с той же структурой, и там человек вёл бы уже свои данные... Что-то вроде:

// файл settings.js export const settings = {   backendUrl: 'http://192.168.0.1/backend.php',   socketUrl: '192.168.0.1:3000', };  // Где-то внутри проекта за рамками settings.js import { settings } from './settings.js'; /* Манипуляции с данными... */

// файл settings.js export const settings = { backendUrl: 'http://192.168.0.1/backend.php', socketUrl: '192.168.0.1:3000', }; // Где-то внутри проекта за рамками settings.js import { settings } from './settings.js'; /* Манипуляции с данными... */

Соответственно, проект должен брать настройки из этого файла и использовать их динамически. (То есть, меняется конфиг - меняется поведение проекта).
Можно ли что-то подобное сделать на Vite + React?

Дополнительно:

Да всё же элементарно. Просто подключайте ваш settings.js перед скриптом приложения и берите ваши настройки из глобальной переменной. А в settings.js примерно это:

window.APP_SETTINGS = {   API_URL: "https://api.example.com", };

window.APP_SETTINGS = { API_URL: "https://api.example.com", };

  • А в проекте как эти данные использовать? Там же нет никакого window...
    Есть globalThis, попробовал с ним, но всё равно не получилось...
  • Vurundshundba,

    А в проекте как эти данные использовать?

    В каком проекте? В браузере не может не быть window.

  • Алексей Ярков, Ну смотрите, у меня есть проект на React. Он собирается с помощью Vite. В самих исходниках надо использовать данные из настроек (тот самый файл settings.js). Если делать экспорт данных в settings.js, а в проекте делать импорт, то эти данные "зашиваются" в итоговую сборку. И даже если настроить Vite на сборку конкретного файла отдельно, то данные оттуда браться не будут (пробовал). А для реализации задуманного надо чтоб данные всегда брались из отдельного файла, даже когда проект собран. Либо как-то настроить Vite таким образом, чтобы он делал отдельный "чанк" файла с настройками, но при этом брал данные именно оттуда...
  • Vurundshundba, что вы там нафантазировали? Просто положите ваш settings.js в папку public, ну или где у вас там статика, а в index.html в секции head подключите его. Меняйте там данные и читайте в приложении из глобальной переменной. Всё.
  • Алексей Ярков, действительно, сработало. Спасибо! Правда, всё равно этот способ слегка "костыльным" кажется...
  • Vurundshundba,

    слегка "костыльным" кажется

    Это потому что вы начитались советов про то, что глобальные переменные зло )) Просто надо использовать то что уместно в сложившейся ситуации.

  • Алексей Ярков,

    начитались советов про то, что глобальные переменные зло ))

    Абсолютно верно)) Так и учили...

Ответы:

С помощью node.js прочитываешь файл при запуске, передаешь их в проект.

Не совсем понятно, ты собираешь просто сервер или программу на electron.js пример. Но суть все равно не меняется с помощью node.js читаешь файл и передаешь данные.

  • bit8 Собираю обычный фронтенд на реакте. Работать будет в браузере.
    Файл читать чем-то типа readFileSync? Он же в браузере недоступен будет...
    Можно пример в виде кода?
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Для создания файла конфигурации собранного приложения с использованием Vite и React, вам потребуется создать файл vite.config.js в корневой директории вашего проекта. В этом файле вы можете указать различные параметры и настройки для сборки вашего приложения.

Прежде всего, убедитесь, что у вас установлен пакет vite. Если нет, установите его с помощью npm:

npm install vite --save-dev

npm install vite --save-dev

Затем создайте файл vite.config.js и добавьте в него следующий код:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
 
export default defineConfig({
  plugins: [react()],
  build: {
    outDir: 'dist', // папка, в которую будет собрано приложение
    sourcemap: true, // генерация sourcemaps для отладки
    minify: 'terser', // минимизация кода с использованием Terser
    rollupOptions: {
      // дополнительные настройки Rollup
    },
  },
});

import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], build: { outDir: 'dist', // папка, в которую будет собрано приложение sourcemap: true, // генерация sourcemaps для отладки minify: 'terser', // минимизация кода с использованием Terser rollupOptions: { // дополнительные настройки Rollup }, }, });

В этом коде мы импортируем функцию defineConfig из пакета vite и плагин react для работы с React. Затем мы экспортируем объект конфигурации, в котором указываем различные параметры для сборки приложения. Например, мы указываем папку, в которую будет собрано приложение, активируем генерацию sourcemaps для отладки, выбираем минимизатор кода и так далее.

После того как вы создали файл конфигурации, вам нужно запустить сборку вашего приложения. Для этого выполните команду:

npm run build

npm run build

После успешной сборки вашего приложения, вы найдете собранные файлы в указанной папке (dist в данном случае). Теперь у вас есть файл конфигурации для собранного приложения с использованием Vite и React.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно