6

我正在使用 Surge 来托管我的 create-react-app 网站,为了使用客户端路由,你需要你的入口点,200.html但是当使用 create-react-app 时,它默认设置为index.html. 在不破坏网站的情况下重命名该文件的最佳方法是什么?

4

2 回答 2

8

正如相关CRA 问题 1761中所建议的,建议的解决方案是弹出整个配置(包括 Webpack):

npm run eject

运行 npm runeject 会将所有配置文件和传递依赖项(Webpack、Babel、ESLint 等)直接复制到您的项目中,这样您就可以完全控制它们。npm start 和 npm run build 之类的命令仍然有效,但它们会指向复制的脚本,以便您可以调整它们。在这一点上,你是靠自己的。(为什么我喜欢 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处理后的简单重命名对您来说就足够了。

于 2018-06-10T17:39:15.443 回答
2

更新的答案

对于较新的 create-react-app 版本,配置看起来有点变化。

首先,您需要弹出:

npm run eject

然后打开 config 文件夹中的 paths.js,并更改 module.exports 中的 appHtml 属性。这是您需要进行的唯一更改。

这是修改后的导出对象的示例:

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')),
};
于 2019-10-03T09:47:55.627 回答