npm run deploy部署后gh-pages分支未包含CNAME文件问题咨询
问题根因
gh-pages插件部署时仅会上传命令中-d参数指定目录内的文件,当前配置指定的上传目录是build文件夹。你将CNAME文件放在了develop分支的项目根目录,该文件不会被React构建流程打包到build目录中,自然不会被推送到远程gh-pages分支,每次部署都会覆盖之前手动生成的CNAME配置。
不需要为gh-pages插件添加额外特殊配置,只要保证部署执行前build目录内存在内容正确的CNAME文件即可,可通过以下两种方案实现:
可行解决方案
方案一(推荐):将CNAME文件移入public目录
React项目执行构建时,public目录下的所有静态文件会被原样复制到build输出目录。直接将填写好自定义域名的CNAME文件从项目根目录移动到public文件夹下,后续执行npm run deploy时,CNAME会随构建产物一同被推送到gh-pages分支,无需每次部署后手动到GitHub Pages设置页重复配置域名。
方案二:在predeploy脚本中增加复制步骤
如果不想调整CNAME文件的存放位置,可以修改package.json中的predeploy脚本,在构建完成后自动将根目录的CNAME复制到build目录:
- macOS/Linux系统可将脚本修改为:
"predeploy": "npm run build && cp CNAME build/"
- Windows系统可将脚本修改为:
"predeploy": "npm run build && copy CNAME build\\"
如果需要跨平台兼容,可以先安装cpx开发依赖:npm i cpx -D,再将脚本修改为:
"predeploy": "npm run build && cpx CNAME build"
注意事项:CNAME文件内仅需填写你的自定义域名,不要添加额外内容,不要带
https://、http://这类协议前缀,否则会导致域名解析异常。
内容的提问来源于stack exchange,提问作者ThrowableException
相关产品推荐
相关产品推荐

