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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как предлагается в соответствующем 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, похоже, конфигурации немного изменились.
Для начала вам нужно будет извлечь:
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')),
};
Второе решение / обходной путь - отличное решение! Полное извлечение приложения create-react-app - это тяжелое решение такой простой проблемы.