create-react-app配置多页应用
发布时间:2020-12-15 06:36:47 所属栏目:百科 来源:网络整理
导读:creat-react-app的多页脚手架的配置 背景:最近接手一个混合app项目,但是其中的页面都是用jquery写的,有点乱,所以决定用react重构一下,因为涉及到很多页面,所以create-react-app只能自己配置成多页的了。弄这个也弄了挺久的,主要是对webpack的各个配置
creat-react-app的多页脚手架的配置背景:最近接手一个混合app项目,但是其中的页面都是用jquery写的,有点乱,所以决定用react重构一下,因为涉及到很多页面,所以create-react-app只能自己配置成多页的了。弄这个也弄了挺久的,主要是对webpack的各个配置项不够了解。也走了很多弯路,所以在这就写下来,算作对自己的一个总结。 具体配置1.使用create-react-app 创建一个单页应用,并且创建成功之后运行 npm run eject 暴露配置
//这里我已经写成对象格式了,有多少个页面就添加多少个key:value对,这里我已经添加了一个admin,数组中的paths.appSrc+'/admin.js'就是这个html页面的入口文件 entry: { index:[ require.resolve('./polyfills'),require.resolve('react-dev-utils/webpackHotDevClient'),paths.appIndexJs,],admin:[ require.resolve('./polyfills'),paths.appSrc + '/admin.js',] }
//多少个页面就new 多少个 HtmlWebpackPlugin 并且在每一个里面的chunks都需要和上面的entry中的key匹配,例如上面entry中有index和admin这两个。这里的chunks也需要是index和admin new HtmlWebpackPlugin({ inject: true,chunks:["index"],template: paths.appHtml,}),new HtmlWebpackPlugin({ inject: true,chunks:["admin"],template:paths.appHtml,filename:'admin.html' }), 3.修改config下的webpack.config.prod.js文件
//这里的paths.appIndexJs和paths.appSrc+'/admin.js'依然是每个html的入口文件 entry:{ index:[ require.resolve('./polyfills'),paths.appIndexJs ],paths.appSrc+'/admin.js' ] }
//和开发环境下一样,多少个html就new多少个 HtmllWebpackPlugin,每个都需要指定chunks,并且指定filename,在minify中配置是否压缩js、css等,这是生产环境下的配置 new HtmlWebpackPlugin({ inject: true,minify: { removeComments: true,collapseWhitespace: true,removeRedundantAttributes: true,useShortDoctype: true,removeEmptyAttributes: true,removeStyleLinkTypeAttributes: true,keepClosingSlash: true,minifyJS: true,minifyCSS: true,minifyURLs: true,},new HtmlWebpackPlugin({ inject: true,filename:'admin.html', 3.在开发环境中如果想通过地址访问不同的页面,需要修改webpackDevServer.config.js
//这里的rewrites:[ {from: /^/admin.html/,to: '/build/admin.html' }] 数组里面是一个个对象,对象中前面的值是在开发时候访问的路径,例如 npm run start之后会监听 localhost:3000 ,此时在后面加上 /admin.html就会访问admin.html中的内容,默认是访问index.html;数组中的第二个值是生产环境下的文件的路径。如果有很多页面,就在rewrites中添加更多对象 historyApiFallback: { disableDotRule: true,rewrites: [ { from: /^/admin.html/,to: '/build/admin.html' },] }, 在我的github上我已经创建了一个基于create-react-app的模板,里面也有例子和讲解,大家可以看一看。(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |