Как заставить rspack/rsbuild использовать относительные пути?

Я создал новое приложение React, используя rspack, на основе документации, которую я использовал с помощью команды npm create rsbuild@latest.

Я развернул сборку на страницах Github, к сожалению, страница пуста. Кажется, он не может импортировать необходимые файлы.

Я посмотрел сгенерированный код .html.

<!doctype html>
<html>
   <head>
      <meta charset = "UTF-8">
      <meta name = "viewport" content = "width=device-width, initial-scale=1.0">
      <script defer src = "/static/js/lib-react.66d7bffd.js"></script><script defer src = "/static/js/234.7da32f54.js"></script><script defer src = "/static/js/index.0006388e.js"></script>
      <link href = "/static/css/index.ff669eb5.css" rel = "stylesheet">
   </head>
   <body>
      <div id = "root"></div>
   </body>
</html>

и я думаю, что пути должны быть относительными. Когда я добавляю . к каждому пути, все работает как положено.

Как заставить rspack/rsbuild использовать относительные пути?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
82
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я не очень хорошо знаю RSBuild, но я думаю, что вы можете написать сценарий, который читает каждый файл и делает все пути относительными... Поставь лайк relativify.js и запусти его через узел, который ищет каждый файл в твоей папке dist...

На самом деле этот вопрос следует перевести так: Как я могу использовать rsbuild для публикации страницы на странице GitHub и обеспечения ее правильной работы?

Основная причина вашего описания «невозможно импортировать необходимые файлы» заключается в том, что путь не совпадает. Причина всего этого в том, что страницы GitHub автоматически добавляют дополнительный вторичный путь на основе имени репозитория. Например, если мое имя на Github — GrinZero, то мое доменное имя — https://grinzero.github.io. И мои страницы GitHub для каждого репозитория будут начинаться с этого имени домена и использовать имя репозитория в качестве вторичного пути. Например, у меня есть два репозитория, использующих страницы GitHub, а именно node-network-devtools и magic-design-react. Итак, пути доступа к их страницам GitHub:

Вообще говоря, когда мы инициализируем проект, будь то Vite, Webpack или RSpack, по умолчанию вторичных путей нет. То есть, пока мы добавляем вторичный путь, проблема будет решена.

Так как же его добавить? В Vite для его изменения можно использовать атрибут base. А для rspack, согласно полученной мной информации, его можно установить через output.publicPath.

Я создал новый проект и новую сборку. Распространение работает локально, но когда я пытаюсь npx http-serve, у меня возникает та же проблема. Мне нужны только относительные пути, чтобы это исправить. Я попробовал output.publicPath = '.', но это не помогло. Когда я развертываю проекты Vite, все эти проекты имеют base = '.', и это работает нормально.

baitendbidz 22.07.2024 19:55

Например, если имя моего репозитория — magic-design-react, то publicPath должен быть /magic-design-react/, а база — /magic-design-react.

bugyaluwang 23.07.2024 03:31
Ответ принят как подходящий

Попробуй это:

// rsbuild.config.ts
import { pluginReact } from '@rsbuild/plugin-react';

 export default defineConfig({
   plugins: [pluginReact()],
+  output: {
+     assetPrefix: './'
+  }
 });

Другие вопросы по теме