Как я могу переименовать index.html в проекте create-react-app?

Я использую Surge для размещения своего веб-сайта приложения create-response-app, и для использования с ним маршрутизации на стороне клиента вам нужна точка входа 200.html, но при использовании приложения create-response-app оно по умолчанию установлено на index.html. Как лучше всего переименовать этот файл, не нарушая работу сайта?

Поведение ключевого слова "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) для оценки ваших знаний,...
3
0
8 485
2

Ответы 2

Как предлагается в соответствующем CRA, выпуск 1761, предлагаемое решение состоит в том, чтобы удалить всю конфигурацию (включая Webpack):

npm run eject

Running npm run eject copies all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. Commands like npm start and npm run build will still work, but they will point to the copied scripts so you can tweak them. At this point, you’re on your own. (Why I love Create React App)

После извлечения вы сможете вручную редактировать конфигурацию внутри config/webpack.*.js.

Вы можете ожидать там такую ​​строку:

new HtmlWebpackPlugin({ inject: true, template: paths.appHtml, filename: 'index.html', ...)

Где вы можете просто заменить index.html на желаемый 200.html.


Также есть возможность поиграть с командами построения (например, предложенным lcoder):

{
  "scripts": {
    ...
    "build": "node scripts/build.js && mv build/index.html build/app.html",
    ...
  }
}

Предполагая, что вам будет достаточно простого переименования после процесса build.

Второе решение / обходной путь - отличное решение! Полное извлечение приложения create-react-app - это тяжелое решение такой простой проблемы.

rococo 03.04.2019 08:10

Обновленный ответ

Для более новых версий приложения create-react-app, похоже, конфигурации немного изменились.

Для начала вам нужно будет извлечь:

npm run eject

Затем откройте paths.js, который находится в папке config, и измените свойство appHtml в файле module.exports. Это единственное изменение, которое вам нужно сделать.

Вот пример измененного объекта экспорта:

module.exports = {
  dotenv: resolveApp('.env'),
  appPath: resolveApp('.'),
  appBuild: resolveApp('build'),
  appPublic: resolveApp('public'),
  appHtml: resolveApp('public/mynewawesomeindexfile.html'),  //Change only this line
  appIndexJs: resolveModule(resolveApp, 'src/index'),
  appPackageJson: resolveApp('package.json'),
  appSrc: resolveApp('src'),
  appTsConfig: resolveApp('tsconfig.json'),
  appJsConfig: resolveApp('jsconfig.json'),
  yarnLockFile: resolveApp('yarn.lock'),
  testsSetup: resolveModule(resolveApp, 'src/setupTests'),
  proxySetup: resolveApp('src/setupProxy.js'),
  appNodeModules: resolveApp('node_modules'),
  publicUrl: getPublicUrl(resolveApp('package.json')),
  servedPath: getServedPath(resolveApp('package.json')),
};

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