Estoy empezando a jugar con la aplicación Create React, pero no puedo entender cómo index.js
se carga en el interior index.html
. Este es el código html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<!--
Notice the use of %PUBLIC_URL% in the tag above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
</head>
<body>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start`.
To create a production bundle, use `npm run build`.
-->
</body>
</html>
Pero no puedo ver en ninguna parte la importancia del index.js
. ¿Dónde está la conexión? ¿Qué me estoy perdiendo?
create-react-app my-app
y abro el proyecto usando webstorm, luego hago npm start, pero mi pregunta es ¿cómo sabe index.html que tiene que cargar index.js? donde esta escribirnpm run eject
para controlar manualmente las configuraciones. Recomiendo hacer una configuración más básica desde cero para comprender completamente lo que está sucediendo :)Respuestas:
Bajo el capó, Create React App usa Webpack con html-webpack-plugin .
Nuestra configuración especifica que Webpack utiliza
src/index.js
como un "punto de entrada" . Así que ese es el primer módulo que lee, y lo sigue a otros módulos para compilarlos en un solo paquete.Cuando webpack compila los activos, produce un solo paquete (o varios si usa la división de código). Hace que sus rutas finales estén disponibles para todos los complementos. Estamos usando uno de esos complementos para inyectar scripts en HTML.
Hemos habilitado html-webpack-plugin para generar el archivo HTML. En nuestra configuración, especificamos que debería leerse
public/index.html
como una plantilla. También hemos configurado lainject
opción atrue
. Con esa opción,html-webpack-plugin
agrega un<script>
con la ruta proporcionada por Webpack directamente en la página HTML final. Esta página final es la que ingresabuild/index.html
después de ejecutarnpm run build
y la que se sirve/
cuando ejecutanpm start
.¡Espero que esto ayude! La belleza de la aplicación Create React es que en realidad no necesitas pensar en ella.
fuente