如何对于create-react-app修改为多页面支持

这次给大家带来如何对于create-react-app修改为多页面支持,对于create-react-app修改为多页面支持的注意事项有哪些,下面就是实战案例,一起来看一下。

修改dev流程

在已经通过create-react-app生成项目的基础下yarn run eject

yarn add globby 用于查看html文件

修改config/paths.js

//遍历public下目录下的html文件生成arryconst globby = require('globby');const htmlArray = globby.sync([path.join(resolveApp('public'), '/*.html')]);//module.exports 里面增加htmlArray

登录后复制

修改config/webpack.config.dev.js

// 遍历htmlconst entryObj = {};const htmlPluginsAray = paths.htmlArray.map((v)=> { const fileParse = path.parse(v);  entryObj[fileParse.name] = [  require.resolve('./polyfills'),  require.resolve('react-dev-utils/webpackHotDevClient'),  `${paths.appSrc}/${fileParse.name}.js`,, ] return new HtmlWebpackPlugin({  inject: true,  chunks:[fileParse.name],  template: `${paths.appPublic}/${fileParse.base}`,  filename: fileParse.base })});entry:entryObj// new HtmlWebpackPlugin({//  inject: true,//  chunks: ["index"],//  template: paths.appPublic + '/index.html',// }),...htmlPluginsAray,

登录后复制

修改config/webpackDevServer.config.js

// 增加const path = require('path');const htmlPluginsAray = paths.htmlArray.map((v)=> { const fileParse = path.parse(v); return {  from: new RegExp(`^/${fileParse.base}`), to: `/build/${fileParse.base}` };});rewrites: htmlPluginsAray

登录后复制

以上就是dev模式下的修改了,yarn start一下试试。

修改product流程

修改config/

//增加// 遍历htmlconst entryObj = {};const htmlPluginsAray = paths.htmlArray.map((v)=> { const fileParse = path.parse(v);  entryObj[fileParse.name] = [  require.resolve('./polyfills'),  `${paths.appSrc}/${fileParse.name}.js`, ]; console.log(v); return new HtmlWebpackPlugin({  inject: true,  chunks:[fileParse.name],  template: `${paths.appPublic}/${fileParse.base}`,  filename: fileParse.base })}); entry: entryObj,...htmlPluginsAray,

登录后复制

增加复制模块(yarn add cpy)

修改scripts/build.js

 // function copyPublicFolder () 替换// 原来的方法是复制public下所有的内容,因为增加了多html 所以不再直接复制过去(直接复制会覆盖html)const copyPublicFolder = async() => { await cpy([`${paths.appPublic}/*.*`, `!${paths.appPublic}/*.html`], paths.appBuild); console.log('copy success!'); // fs.copySync(paths.appPublic, paths.appBuild, { //  dereference: true, //  filter: file => file !== paths.appHtml, // });}

登录后复制

以上修改后测试下yarn build

查看下html对应生成对不对,正常是OK的。

增加功能

sass支持(此参考create-react-app的文档,注意不要直接复制文档里面的”start”: “react-scripts start”, “build”: “react-scripts build”,因为我们前面已经yarn eject,所以这样用的话是有问题的可以自行体验一下)

// 增加模块yarn add node-sass-chokidar npm-run-all// package.json删除配置"start": "node scripts/start.js","build": "node scripts/build.js",// package.json里面增加scripts"build-css": "node-sass-chokidar src/scss -o src/css","watch-css": "npm run build-css && node-sass-chokidar src/scss -o src/css --watch --recursive","start-js": "node scripts/start.js","start": "npm-run-all -p watch-css start-js","build-js": "node scripts/build.js","build": "npm-run-all build-css build-js",

登录后复制

html引入模块

yarn add html-loader

登录后复制

html里可以写img支持打包到build,如果不写的话是无法打包的,除非你在js里面require

<img  src="https://www.php.cn/faq/" alt="">

登录后复制

后面还要取消hash之类的配置,这个就不记录了。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

应该如何搭建webpack+react开发环境

怎样使用JS实现3des+base64加密解密算法

以上就是如何对于create-react-app修改为多页面支持的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2755093.html

(0)
上一篇 2025年3月8日 07:12:49
下一篇 2025年3月8日 07:12:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论