Skip to content

Commit 580ea53

Browse files
committed
README at VERSION 2.0
Se ha redactado el contenido del segundo capítulo
1 parent 9a360fe commit 580ea53

File tree

1 file changed

+137
-1
lines changed

1 file changed

+137
-1
lines changed

README.md

Lines changed: 137 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Una vez dispongas de todo ello, por favor, asegúrate de tener nociones claras s
2828
npm install --save-dev webpack webpack-cli
2929
```
3030
Nuestro proyecto ya está casi listo para la [**VERSIÓN 1.0**](../../releases/tag/v1.0)!
31+
3132
1. Crea ahora una carpeta src, puedes usar la instrucción
3233
```bash
3334
mkdir ./src
@@ -88,7 +89,7 @@ Al crear un proyecto obtienes una dirección para clonar.
8889

8990
* La instrucción `git clone` te permite clonar en un directorio local (en nuestro caso `webpack-essential`) un repositorio _git_ que hayas hospedado en un sistema remoto (como _github_, _gitlab_, _bitbucket_ o _sourceforge_). [Aquí tienes un artículo](https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-clone) en el que se te explica cómo y para qué usar esta instrucción.
9091

91-
* El siguiente paso que has seguido es la creación de un archivo `package.json`, mediante la instrucción `npm init --yess`, que permitirà que trabajes con un proyecto _node_ en tu directorio `webpack-essential`.
92+
* El siguiente paso que has seguido es la creación de un archivo `package.json`, mediante la instrucción `npm init --yes`, que permitirà que trabajes con un proyecto _node_ en tu directorio `webpack-essential`.
9293
Si quieres entender un poco mejor la herramienta _npm_ [pásate por esta página](https://docs.npmjs.com/about-npm/).
9394
También puedes leer sobre el archivo `package.json` [en esta página](https://nodejs.org/en/knowledge/getting-started/npm/what-is-the-file-package-json/) y puedes leer sobre la instrucción `npm init` [en esta otra](https://docs.npmjs.com/creating-a-package-json-file)
9495

@@ -109,3 +110,138 @@ Si el término "parseado" (_parsing_ en inglés) te suena a extraterrestre, debe
109110
* Finalmente has ejecutado una instrucción de la herramienta _npx_ que lanza el proceso de empaquetaje (_bundling_) de _webpack_ (usando para ello la herramienta que hemos instalado con el paqueta `webpack-cli`).
110111
Este proceso crea el archivo `dist/main.js` a partir del contenido del archivo `index.js` y de sus dependencias, aunque en nuestro caso no tenga.
111112
Si quieres conocer la herramienta _npx_ es aconsejable que visites [esta página](https://nodejs.dev/the-npx-nodejs-package-runner).
113+
114+
----
115+
116+
## CAPÍTULO 2: Proyecto con webpack.config.js
117+
118+
### CAPÍTULO 2: Antes de empezar
119+
Si aún no has seguido los pasos del capítulo 1, sería importante que lo hicieras.
120+
También sería importante que leyeras el punto llamado ["Antes de empezar"](#capítulo-1-antes-de-empezar) de dicho capítulo.
121+
Finalmente resultará imprescindible que te hagas a la idea de qué es la configuración de _webpack_, que en resumen es el archivo que rige el proceso de empaquetado (_bundling_ en ingés) que ocurre cada vez que ejecutamos `npx webpack`. Para ello te recomendamos que primero visites [la sección "CONCEPTS"](https://webpack.js.org/concepts/) que encontrarás en la web de _webpack_ para luego continuar con el apartado ["Using a configuration" de la guía "GETTING STARTED"](https://webpack.js.org/guides/getting-started/#using-a-configuration) que encontrarás en la misma web.
122+
123+
124+
### CAPÍTULO 2: Pasos previos
125+
Si has seguido los pasos del capítulo 1, tendrás tu proyecto listo para iniciar los pasos del presente capítulo. Pero antes, deberás atender a una cuestión importante: **estás usando un proyecto _git_, que está conectado a un repositorio**. Esto te permitirá hacer una entrega de tu trabajo para poderlo conservar y recuperarlo en este estado actual si lo necesitaras en un futuro.
126+
Por lo tanto, empecemos con dos pasos previos para asegurar que tu trabajo no corre peligro:
127+
128+
1. Crea un archivo llamado `.gitignore` en tu carpeta `webpack-essential` y añádele el siguiente contenido:
129+
```
130+
.gitignore
131+
node_modules
132+
```
133+
Con estas simples líneas te asegurarás de que cualquier operación con _git_ que vayas a realizar, descarte someter al control de versiones de _git_ el propio fichero `.gitignore` y del mismo modo lo haga con la carpeta `node_modules` (que podrás controlar y gestionar con la herramienta _npm_)
134+
135+
1. Ejecuta las siguientes acciones con la herramienta _git_:
136+
1. Primero de todo añade todos los archivos de tu proyecto a la entrega que realizarás, con la instrucción:
137+
```
138+
git add -A
139+
```
140+
1. Acto seguido realiza una entrega de los archivos que dispones, con la instrucción:
141+
```
142+
git commit -m "Entrega del capítulo 1"
143+
```
144+
145+
Si lo deseas, y sabes cómo puedes llevarlo a cabo, te aconsejamos también que publiques esta entrega en el repositorio/s _git_ remoto con el/los que esté conectado tu proyecto.
146+
147+
### CAPÍTULO 2: Cómo crear webpack.config.js
148+
1. Crea un archivo llamado `webpack.config.js` en la carpeta `webpack-essential`. Puedes usar la instrucción
149+
```bash
150+
touch ./webpack.config.js
151+
```
152+
1. Añádele el siguiente código:
153+
```javascript
154+
module.exports = {}
155+
```
156+
Dentro de este objeto javascript, especificaremos valores de configuración de _webpack_, los **nuestros**.
157+
158+
1. Comprueba que webpack sigue funcionando aunque nuestra configuración sea aparentemente vacía. Elimina los archivos que haya en la carpeta `dist`. Para ello puedes usar estra instrucción:
159+
```bash
160+
rm -f dist/*
161+
```
162+
1. Ahora repite el paso 9 del [primer capítulo](#capítulo-1-cómo-crear-el-proyecto), en que ejecutábamos:
163+
```bash
164+
npx webpack
165+
```
166+
Si inspeccionas el contenido de la carpeta `dist`, deberá aparecer de nuevo el archivo `main.js`.
167+
Como has podido comprobar, de alguna manera, _webpack_ asume valores de configuración por defecto, que le permiten crear estos archivos, aunque no le hayamos proporcionado configuración alguna, o aunque esté vacía.
168+
169+
1. Ejecuta ahora la siguiente instrucción para instalar un _plugin_ que nos ayudará a conocer esta configuración:
170+
```bash
171+
npm install --save-dev webpack-config-dump-plugin
172+
```
173+
1. Actualiza ahora el archivo `webpack.config.js` tal que su contenido sea el siguiente:
174+
```javascript
175+
const WebpackConfigDumpPlugin = require('webpack-config-dump-plugin')
176+
177+
module.exports = {
178+
plugins: [
179+
new WebpackConfigDumpPlugin()
180+
]
181+
}
182+
```
183+
1. Repite nuevamente el paso 4, y ejecuta:
184+
```bash
185+
npx webpack
186+
```
187+
1. Abre ahora el archivo llamado `webpack.config.dump` que se ha generado en la carpeta `webpack-essential`. Como verás contiene un contenido que empieza con:
188+
```javascript
189+
module.exports = () => ({ plugins:
190+
[ { outputPath: './', name: 'webpack.config.dump', depth: 4 } ],
191+
```
192+
A partir del segundo paréntesis de apertura (`(`), vemos un objeto javascript, que finaliza en la última línea, justo antes del último paréntesis de cierre (`)`). **Este objeto contiene la configuración que usa _webpack_ por defecto**.
193+
1. Sustituye el archivo `webpack.config.js` por el archivo `webpack.config.dump`. Para ello puedes usar la instrucción:
194+
```
195+
mv webpack.config.dump webpack.config.js
196+
```
197+
Nuestro proyecto ya está casi listo para la [**VERSIÓN 2.0**](../../releases/tag/v2.0)!
198+
199+
1. Ahora realiza las siguientes modificaciones en el archivo `webpack.config.js`:
200+
1. Borra el texto que hay entre los claudators de la segunda línea, tal que tu fichero `webpack.config.js` empiece con:
201+
```javascript
202+
module.exports = () => ({ plugins:
203+
[],
204+
context:
205+
```
206+
1. Elimina por completo la propiedad `defaultRules` que hay dentro de la propiedad `module`, en caso de que exista. **El objeto que hay en la propiedad `module` no deberá tener ninguna propiedad `defaultRules`**
207+
1. Modifica la propiedad `minimizer` que hay dentro de la propiedad `optimization`, tal que quede como sigue: `minimizer: [ ],`.
208+
209+
1. Finalmente podemos volver a usar _webpack_ nuevamente, tal que utilize nuestro fichero de configuración.
210+
Para ello usaremos la ya conocida instrucción:
211+
```
212+
npx webpack
213+
```
214+
215+
**HEMOS TERMINADO!**
216+
Si echas un vistazo a tu carpeta `webpack-essential` encontrarás el siguiente contenido:
217+
```
218+
dist/
219+
main.js
220+
index.html
221+
node_modules/
222+
package.json
223+
package-lock.json
224+
src/
225+
index.js
226+
webpack.config.js
227+
```
228+
Eso significa que el archivo `webpack.config.js` está correctamente escrito!
229+
**En el siguiente capítulo aprendremos a modificar algunas de las opciones que en él aparecen**.
230+
231+
### CAPÍTULO 2: Resumen
232+
* Lo primero que has hecho es crear un archivo de configuración para _webpack_, llamado `webpack.config.js`. Como se explica en el apartado ["Using a configuration" de la guía "GETTING STARTED"](https://webpack.js.org/guides/getting-started/#using-a-configuration) que hay en la web de _webpack_, este archivo te permitirá definir opciones de configuración de _webpack_.
233+
234+
* A continuación has creado el contenido básico para este archivo, utilizando `module.exports`, que es manera tradicional (que utiliza sintaxis de _CommonJS_) de exponer el contenido de un módulo _javascript_, como es en este caso el archivo `webpack.config.js`.
235+
Si desconoces el concepto de **módulo** aplicado a _javascript_, es altamente recomendable que leas el contenido de [esta página](https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/M%C3%B3dulos). En ella encontrarás también recursos que te permitirán asimilar una noción sobre qué es el proyecto _CommonJS_.
236+
Y en caso de que desconozcas su uso en un entorno de un proyecto creado mediante _npm_, o en otras palabras, un proyecto creado mediante herramientas de NodeJS, entonces es oportuno que eches un vistazo a [esta página](https://nodejs.org/en/knowledge/getting-started/what-is-require/), y otro vistazo a [esta otra](https://nodejs.dev/expose-functionality-from-a-nodejs-file-using-exports), para entender porqué y para qué se _expone_ el contenido de un módulo _javascript_.
237+
238+
* Al alcanzar el punto 5, has instalado un paquete de node llamado `webpack-config-dump-plugin`, sobre el que podrás obtener información en [esta página](https://www.npmjs.com/package/webpack-config-dump-plugin). Y posteriormente, en el punto 6, lo has importado mediante el uso de la función `require` (propia de _CommonJS_) para utilizarlo como **plugin** en la configuración de _webpack_.
239+
Si no estás familiarizado/a con el concepto "_plugin_" entonces deberías pasarte por el [apartado correspondiente de la sección "CONCEPTS"](https://webpack.js.org/concepts/plugins/) que encontrarás en la web de _webpack_.
240+
241+
* Llegados al punto 8, al ejecutar `npx webpack`, _webpack_ ha hecho uso de este _plugin_ durante su proceso de _empaquetado_, generando un archivo llamado `webpack.config.dump` cuyo contenido es un "volcado" de la configuración que ha utilizado _webpack_ para dicho proceso.
242+
243+
* Luego a partir de esta configuración "volcada" en un fichero, has generado contenido para el archivo de configuración `webpack.config.js`.
244+
Y como habrás visto la configuración de webpack es muy rica en opciones. De hecho puedes hacerte a la idea de todo lo que podrás configurar si pasas por el apartado ["Options" que hay en la sección "CONFIGURATION"](https://webpack.js.org/configuration/#options) de la web de _webpack_.
245+
246+
* Finalmente, en el punto 10 has realizado algunos ajustes en las opciones de configuración, en tanto que **no existe una correspondencia absoluta** entre el modo en que se expresan las opciones configuración en el archivo `webpack.config.js` y la configuración que hemos obtenido mediante el "volcado".
247+
Seguramente te habrá llamado la atención el cambio de tipo de dato que ha ocurrido en `module.exports`, pasando de un objeto, tal y como aparecía en el punto 6, a una función. Puedes comprobar si visitas el apartado ["Configuration Types" que hay en la sección "CONFIGURATION"](https://webpack.js.org/configuration/configuration-types/) de la web de _webpack_, que en efecto es posible usar tanto un objeto que contenga opciones de configuración válidas, como también una función que retorne un objeto de ese tipo.

0 commit comments

Comments
 (0)