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