How to Host two react js application on single application pool? - reactjs

I am trying to host two react applications under Default Web site in IIS?
ex. if the domain is test.com
The URL for both sites is like
test.com/React1
test.com/React2
Image 1
Image 2
Image 3
Image 4
Image 5
If we refresh the Page in Image 4 we get the following.

If you want to deploy the react app as sub-application in iis then you need to do below settings:
Convert all absolute links to relative ones.
<link href="/static/css/main.584f321a.chunk.css" rel="stylesheet">
to
<link href="./static/css/main.584f321a.chunk.css" rel="stylesheet">

if you are using yarn to build your app. You have to add two things in your package.json file.
First add the homepage value into package.json at the same level of name value
{
"name": "...",
"version": "...",
"hompage" : "/SitePrefix"
...
}
In your case you have 2 sites testweb1 and testweb2. So, you have to change /SitePrefix by /testweb1 or /testweb2 in their package.json respectively. Then add a command to compile your project so You have to set de variable PUBLIC_URL (it appears at index.html file of public folder like %PUBLIC_URL%). You must change the value of that variable to be overwritten in the final index.html file. so add the build-prod-env command in your package.json
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"build-prod-env": "set PUBLIC_URL=/testweb1&&yarn build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
Don't add spaces between /testweb1 and && because it is going to affect your compile process. Publish your app and do the same with the other page changing the PUBLIC_URL variable.

Related

How to rename 'index.js' file in React File structure to something else?

In the React file structure under components there is index.js file that runs the main character when running the project. Is there anyway to rename this file to any name I want? I am using PM2 server manager and there is no way for me to keep track which server is which when running multiple index.js files. So the only option I got is to rename this index.js to something specific to each project.
I have tried changing the package.json file's start script as below but nothing worked out only gave errors.
"scripts": {
"start": "test.js react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
Appreciate all your help!
You can't change the name of the file used by create-react-path.
You'll have to either eject to use custom webpack config by running
npm run eject
But it's a one-way operation (see documentation)
Or you can use Vite instead of create-react-app to bundle your project.
Vite is more configurable than create-react-app, you define in the index.html the name of your js file. So you can put any name you want.
Maybe even this example could help you:
https://vitejs.dev/guide/ssr.html#example-projects

what is causing app cache storage to by almost double in size for app build folder size (no external data to contribute to the increase)?

I have the following issue
React app that is served to firebase hosting is caching double the size of the build folder for non apparent reason,
my current network tab looks like this
as you can see the resources are 2.5 and i have no idea what resources in this case are referring to ?
my cache tab looks like this
why is the cache is getting up to this size my finale build folder size is 3.4mb (not zipped by any means),
I tried to fix the issue of my build file being big by using
compress-create-react-app
to make the build folder smaller, and then serve that file to firebase hosting but it didn't help , firebase didn't read the zipped files for some reason, however as one question suggested the firebase actually compress your hosted files, but this is not true sine I was able to get my .js main chunk and it has the same size and the one in my non compressed default folder , what do you think is the gist here ?, it seems like my build is getting cached twice for some reason.
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build && compress-cra",
"test": "react-scripts test",
"eject": "react-scripts eject"
},

React-create-app index.js file doesn't reload automatically

I'm using React version 17.0.1 on windows and I've noticed that the create-react-app hot reload doesn't work. I found some tips online (Development server of create-react-app does not auto refresh for example ) and tried every one of them (my path doesn't include parentheses, it isn't synced to google drive or dropbox, I've tried the watcher refresh and reinstalling the node modules). Nothing worked until I realized that the problem occurs only with the index.js file. If I save any other file (html or components) the browser does reload automatically. I've read that this might be a bug with the newer version of React that was released just days before I started studying this subject.
One thing I should mention is that my npm start script (that was automatically generated) is different than the ones I saw on the other threads (Auto reload react server on update for example), It doesn't says "Webpack" at all and I thought it maybe have something to do with my problem.
From the package.json file:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
Is there any way around this bug? Is this problem familiar?

Using React and redux to build a browser extension

I'm building a fairly complex browser extension for a client and it occurred to me that I could leverage Redux in the backend scripts to simplify the overall information flow, as well as using React in the UI, and modern javascript in the content scripts I need.
I've got a basic extension working, by building the background and content scripts in separate build steps. My src folder looks like:
src/
background/
index.js (and other js files)
content/
index.js (and other js files)
toolbar/ (shows intro text and a button to display prefs - see webpage below)
toolbar.html
App.js
App.css
components/ (etc)
webpage/ (displays the UI elements for use prefs etc)
webpage.html
App.js
App.css
components/ (etc)
common/
index.js (etc - common logic used by both toolbar, webpage, content and background.)
Right now I am building each subfolder independently via scripts in package.json
"scripts": {
"prebuild": "rimraf build",
"build": "yarn build:app && yarn build:bg && && yarn build:cont",
"build:app": "INLINE_RUNTIME_CHUNK=false react-scripts build",
"build:bg": "webpack --mode production ./src/background --output ./build/background.js",
"build:cont": "webpack --mode production ./src/content --output ./build/content.js",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
but the build:app step by default seems to also build everything that's in src/ so the background, content etc stuff gets duplicated and the html in the subfolders is unused.
Is there a way to tell create-react-app's webpack config to build these all to suit the needs of my extension without ejecting?

How to deploy React app (create-react-app) to Back4App?

I've created an React app with create-react-app and I want to deploy it to Back4App.
The problem is I want to deploy the build folder and not the public folder (which I understand is the default for Back4App / ParsePlatform).
So far, I haven't found any way to config deploy to use anything other than the public folder.
Any solution / workaround to this?
If you are using B4A CLI, one of the easiest ways to deploy a create-react-app is, firstly, changing the build script into your package.json as below snippet:
...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build && cp -r build/* {{PATH-TO-YOUR-B4A-APP}}/public",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
...
As you can see, you just need to move all content inside create-react-app build folder to the public folder of your cloud code. After that, move to your app path and run b4a deploy.
Also, you could add a step to clear all public folder content before move the new stuff, but be careful with this step.
Otherwise, you could access the Back4app Parse-Dashboard into the Cloud Code Functions and deploy all the build stuff in public folder using the browser interface.
This is a live demo of a create-react-app deployed in Back4App.

Resources