Introduction
Le premier problème que vous pourriez rencontrer est de configurer webpack et babel pour utiliser une version moderne de Javascript avec React, dans ce tutorial je vais vous présenter une configuration simple et efficace.
Ce tutorial suppose que vous savez déjà ce qu’est webpack, que vous avez déjà galéré avec sa configuration et que vous aimeriez bien apprendre à le faire vous même from scratch.
1 – Creation d’un projet
Notre projet sera créé comme un projet npm normal, dans un répertoire de votre choix lancez la commande suivante :
npm init
Nommez votre projet, puis laissez tout les paramètres par défaut.
2 – Structure de base
— src/ <—- Sources du projet
|——index.jsx
|——index.html
— public/ <—— Ressources ( images, css … )
— dist/ <—— Contiendra le code compilé et prêt à être déployé.
3 – Installation des dépendances
installer les dépendances webpack :
npm i --save-dev webpack-merge webpack html-webpack-plugin copy-webpack-plugin webpack-dev-server
installer les dépendances babel:
npm i --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react babel-preset-react-hmre babel-preset-stage-0 babel-register
4 – Configuration de babel
Il faut maintenant configurer babel pour utiliser la bonne version de Javascript dans notre projet, notez qu’on ajoute aussi le plugin react qui se charge de transpiler la syntaxe JSX en du code Javascript.
dans package.json ajouter cette section
"babel": {
"presets": [
"es2015",
"react",
"stage-0"
]
},
5 – Configurer webpack
Configurer les scripts pour utiliser webpack dans package.json :
"scripts": {
"start": "webpack-dev-server --progress --inline --hot",
"build": "webpack -p"
},
Script de configuration de webpack
Puis configurez votre web pas comme présenté ci-dessous, avec cette configuration on va :
- Définir le fichier src/index.jsx comme point d’entrée de l’application
- Compiler les fichiers Javascripts dans src/ et ayant une des extensions (js ou jsx)
- Utiliser le plugin ‘HtmlWebpackPlugin‘ pour ajouter automatiquement la balise pointant sur le bundle compilé durant les phases de build et de dev.
- Utiliser le plugin NamedModulesPlugin pour faciliter le débug durant le développement.
- Copier automatiquement toutes les ressources statiques dans dist/ durant le processus de compilation.
- Utiliser le module 'babel-loader' avec les plugins ("es2015", "react", "stage-0") quand il rencontre un fichier Javascript durant la compilation.
- Permettre de charger des styles à partir de fichiers css depuis un composant React avec le module 'style-loader'.
- Permettre la mise à jour du code à chaud durant le dev avec le module 'react-hmre'
- créer un serveur de dev sur le port 9090 afin d'utiliser la mise à jour du code dans le navigateur à chaud.
Tester la configuration
On va tester la configuration en mettant du code javascript de version ES2015 dans le fichier principal :
// src/index.jsx
let nom = "World";
console.log(`Hello ${nom}`);
et le fichier HTML pour permettre d’exécuter ce code dans la console :
<!-- src/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Exemple</title>
</head>
<body></body>
</html>
Vous pouvez maintenant utiliser webpack pour lancer le serveur de dev :
npm start
Puis dans votre navigateur ouvrez l'url http://localhost:9090 et ouvrez la console de développement, vous devriez voir un message Hello World dans la console.
Packager le code pour la distribution ( pour la prod )
Pour packager votre code pour le déployer en production vous pouvez compiler votre code avec la commande :
npm run build
Vous trouverez alors le code prêt à être déployé dans le répertoire dist
Code source
Le code source est disponible sur github au tag suivant step-0 pour pointer directement sur cette étape.
Vous pouvez faire cela depuis la ligne de commande avec les commandes suivantes :
git clone git@github.com:bmarwane/react-step-by-step.git
cd react-step-by-step
git checkout step-0
Innstallez les dépendances avec la commande :
npm install
Puis démarrez votre environnement de développement avec la commande:
npm start
Suite
Dans le chapitre suivant vous allez créer votre premier composant React.