Passer au contenu principal




Moi objectif con este artículo era establecer una configuración simple que luego se pueda desarrollar. Ha sido una lucha para entender Webpack. 

Ce que je prévois de faire est de faire une fonctionnalité de recherche avec des données JSON fausses (ou réelles). Dans cet article de schooljavascript.com, Je vais passer en revue la configuration de mon projet.

Créez un nouveau projet et ajoutez-y un cd:

mkdir react_search cd react_search

Créer un fichier package.json :

npm init

Si vous souhaitez ignorer toutes les questions, ajoutez la marque -Y:

npm init -y

Nous devons installer Webpack comme dépendance dev y webpack-cli afin que vous puissiez utiliser Webpack sur la ligne de commande:

npm i webpack webpack-cli -D
  • je: Installer
  • -RÉ: - save-dev

Créer un dossier src avec indice.js et mettez le code suivant comme exemple:

console.log ("bonjour");

Maintenant, ajoutez ce qui suit scripts à toi package.json:

[/ php]

{
"Nom": "react_search",
«Version»: «1.0.0»,
«Description»: «Rechercher une application avec React»,
"Main": "index.js",
"Scripts": {
«Démarrer»: »Webpack –développement de mode«,
»Construire«: »Webpack –production en mode»
},
"Mots clés": [],
"Auteur": ",
«Licence»: «ISC»,
"DevDependencies": {
"Webpack": "^ 4.0.1",
"Webpack-cli": "^ 2.0.10"
}
}

[/ php]

le Webpack 4 maintenant, il a deux modes; croissance y production où le code est minimisé dans ce dernier.

Voyez par vous-même, en cours d'exécution:

npm run start

Cela créera un dossier dist avec le fichier main.js à l'intérieur (qui contient votre code src).

Maintenant, exécutez:

npm run build

Configurer React et Babel

Travailler avec Réagir, nous devons l'installer avec Babel. Cela transférera le code de ES6 à ES5, ya que no todos los navigateurs son compatibles con ES6 encore (par exemple, Internet Explorer).

Installez React et React en tant que dépendance.

npm je réagis réaction-soleil -S

Puis installez babel-core , chargeur babel , babel-preset-env y babel-preset-react en tant que dépendance dev:

npm i babel-core babel-loader babel-preset-env babel-preset-reaction -D

  • babel-core: transformez votre code ES6 en ES5
  • chargeur babel: asistente de paquete la toile para transformar tus dependencias de JavaScript (por ejemplo, cuando importas sus componentes a otros componentes) con Babel
  • babel-preset-env: déterminer les transformations / plugins à utiliser et polyfills (proporciona funcionalidad moderna en navegadores antiguos que no lo admiten de forma nativa) en función de la matriz de le navigateur que deseas admitir
  • babel-preset-react: Préréglage Babel pour tous les accessoires Réagir, par exemple, pour convertir JSX intérimaire

Nous devons créer un fichier webpack.config.js pour définir les règles de notre chargeur babel.

Ensuite, nous devons créer un fichier séparé appelé .babelrc pour fournir les options pour babel-loader. Vous pouvez l'inclure dans le fichier webpack.config.js, mais j'ai vu que la plupart des projets ont cela séparé. Cela se traduit par une lisibilité plus claire et peut être utilisé par d'autres outils non liés au package Web. Lorsque vous déclarez que vous utilisez chargeur babel dans la configuration de votre package Web, il recherchera le fichier .babelrc Oui il y en a un.

Puis changez votre fichier index.js pour représenter un composant:

Nous devrons également créer un fichier index.html dans le dossier src où nous pouvons ajouter notre élément de section avec index des identifiants. C'est ici que nous rendons notre principal composant React:

Maintenant, nous devons installer html-webpack-plugin et utilisez-le dans notre fichier de configuration webpack. Ce plugin génère un fichier HTML avec injecté, vous l'écrivez dist / index.html et réduisez le fichier.

Installer html-webpack-plugin en tant que dépendance de développement:

npm i html-webpack-plugin -D

Mettez à jour les paramètres du Webpack de cette manière:

plugins: [nouveau HtmlWebPackPlugin ({template: "./src/index.html", nom de fichier: "./index.html"});

La valeur que je donne à la clé modèle c'est là que je cherche mon dossier HTML. La valeur du nom de fichier est le nom du HTML minifié qui sera généré dans le dossier dist.

Si tu cours maintenant npm run start, vous devriez voir ce qui est généré index.html dans la dossier dist.

Courir ouvert dist / index.html et tu devrais voir Bonjour Réagissez dans votre navigateur.

Création de webpack-dev-server

Il est un peu fastidieux de continuer à exécuter cette commande chaque fois que vous souhaitez voir vos modifications dans le navigateur. Pour que le webpack "voie" nos modifications et par conséquent se mette à jour chaque fois que nous avons apporté des modifications à l'un de nos composants, nous pouvons utiliser le module serveur webpack-dev.

Allez-y et installez-le en tant que dépendance de développement.

npm i webpack-dev-server -D

Puis changez les scripts de démarrage de package.json Donc:

{"name": "react_search", "version": "1.0.0", "description": "Rechercher une application à l'aide de React", "main": "index.js", "scripts": {"start": " webpack-dev-server --mode development --open "," build ":" webpack --mode production "}," keywords ": []," author ":" "," license ":" ISC "," dépendances ": {" react ":" ^ 16.2.0 "," reaction-dom ":" ^ 16.2.0 "" devDependencies ": {" babel-core ":" ^ 6.26.0 "," babel-loader " : "^ 7.1.4", "babel-preset-env": "^ 1.6.1", "babel-preset-react": "^ 6.24.1", "html-webpack-plugin": "^ 3.0. 6 "," webpack ":" ^ 4.1.1 "," webpack-cli ":" ^ 2.0.10 "," webpack-dev-server ":" ^ 3.1.0 "}}

Si tu cours maintenant npm run start tu devrais voir hôte local: 8080 ouvert dans votre navigateur par défaut, c'est à cela que sert le drapeau --Ouvert. Désormais, chaque fois que vous apportez des modifications, la page s'actualisera.

Vous pouvez également ajouter un –Indicateur de tir à toi scénario De début npm ce qui vous permettra de recharger uniquement le composant qui a changé au lieu d'effectuer un rechargement de page complète.

Configurer CSS

La dernière partie concerne la mise en place de notre CSS. Puisque nous allons importer des fichiers CSS dans nos composants React, nous avons besoin du module chargeur css pour les résoudre. Une fois que cela est résolu, nous avons également besoin d'un chargeur de style pour l'injecter dans notre DOM, en ajoutant une balise dans l'élément de notre HTML.

Allez-y et installez les deux modules en tant que dépendance de développement:

npm i css-loader style-loader -D

Notez que l'ordre d'ajout de ces chargeurs est important. Tout d'abord, nous devons résoudre les fichiers CSS avant de les ajouter au DOM avec le chargeur de style. Par défaut, le package Web utilise les chargeurs de la droite (dernier élément du tableau) vers la gauche (premier élément du tableau).

Rendre le CSS modulaire

Nous pouvons également rendre le CSS modulaire en utilisant webpack. Esto significa que el nombre de la clase tendrá un portée local y específico para solo el componente en cuestión.

Pour ce faire, nous pouvons proposer des options pour chargeur css:

Puisque nous devons donner des options, chaque chargeur est maintenant un objet avec une paire valeur clé. Pour activer les modules CSS, nous devons définir l'option module de sorte que chargeur css être verdadero. La opción importLoaders configure le nombre de chargeurs à appliquer avant chargeur css. Par exemple, chargeur de sass devrait venir avant chargeur css.

le localIdentName vous permet de configurer l'identification générée.

  • [nom] prendra le nom de votre composant
  • [local] est le nom de votre classe / id
  • [hachage: base64] est le hachage généré aléatoirement qui sera unique dans le CSS de chaque composant

Pour rendre cela un peu plus visuel, je vais vous donner un exemple. Disons que vous avez un composant appelé Pour mon J'ai un bouton avec une classe CSS primaryButton. J'ai aussi un autre composant appelé Searchy un bouton dessus avec une classe CSS primaryButton. Cependant, les deux classes ont un CSS différent:

/ * Bouton Formulaire * / .primaryButton {couleur d'arrière-plan: vert; } Bouton de recherche .primaryButton {background-color: blue; }

Lorsque le package Web regroupe votre application, selon le CSS le plus récent, les deux boutons peuvent être verts ou bleus au lieu de verts et rechercher avec du bleu.

C'est là que le localIdentName se met en place. Avec cela, une fois votre application emballée, vos boutons auront un nom de classe unique!

Comme vous pouvez le voir, le nom de classe du bouton dans le composant Form est différent de celui du composant Chercher: son nom commence par le nom du composant, le nom de la classe et le code de hachage unique.

Donc, avec cela, vous n'avez pas à vous soucier de savoir si vous avez donné le même nom de classe dans toute votre application; vous devez juste vous inquiéter si vous l'avez utilisé sur le même composant.

Esto concluye la primera parte de configurar una aplicación React desde cero. En la próxima publicación del Blog, mi objetivo es explicar cómo configurar las pruebas para TDD y cómo escribirlas.