Bienvenue dans ce modèle/template de projet React !
- Première utilisation
- Comment démarrer un projet ?
- Build du projet
- Utilitaires
- Dépendances
- Scripts
- Prérequis
Récupérez une copie du modèle :
git clone [email protected]:O-clock-Newton/React-modele.git
On va copier/coller les fichiers de configuration du modèle dans le dossier du challenge, sans écraser d'éventuels fichiers déjà présents.
Pour ce faire :
# Exemple avec les dossiers React-model et mon-challenge au même niveau :
# direction le dossier du challenge
cd mon-challenge
# copie des fichiers cachés et non-cachés présents à la racine du modèle
# note : des alertes sont affichées à propos de dossiers ignorés, c'est normal
cp -n ../React-modele/{.*,*} .
# copie (récursive) des dossiers src/, config/, public/ et tests/
# note : des alertes peuvent être affichées à propos de fichiers ignorés, c'est normal
cp -rn ../React-modele/{src,config,public,tests} .
# installation des dépendances listées dans le package.json
yarn
# lancement du serveur de dev
yarn start
Le mode d'utilisation par défaut consiste à lancer un serveur de dev avec yarn start
, mais alors tout est géré en mémoire : on ne voit jamais le résultat concret du travail de Webpack.
Webpack peut toutefois produire une version concrète du projet dans un dossier dist/
avec la commande yarn build
.
build
permet de construire le projet pour la production (version prête pour hébergement).
- Assemblage des fichiers
- Copie de fichiers
- Nettoyage du code
- Minification du code
- ...
# dans le dossier du projet
cd mon-projet
# build de production : les fichiers sont rassemblés *et optimisés*
yarn build
EditorConfig
Permet d'adapter l'indentation de l'éditeur grace à un fichier .editorconfig
ext install EditorConfig.EditorConfig
ESLint
Linter pour le JavaScript
ext install dbaeumer.vscode-eslint
Babel JavaScript
Coloration syntaxique améliorée pour ES6+
ext install mgmcdermott.vscode-language-babel
VScode Duplicate
Permet de dupliquer un fichier / dossier
ext install mrmlnc.vscode-duplicate
Task Runner, Builder ou Bundler ie. automatisation de tâches : transpilation JS par Babel, conversion Sass -> CSS, optimisation du build, etc.
webpack
- Packageur de modules et ressources.webpack-cli
- Interface en ligne de commande pour Webpack.webpack-dev-server
- Serveur de développement pour Webpack.webpack-merge
- Outil de fusion de fichiers de configuration.cross-env
- Cross platform configuration.- Loaders :
babel-loader
- Transpile les fichiers avec Babel depuis Webpack.sass-loader
- Charge et transforme le SCSS en CSS.sass
- Préprocesseur Sass (implémentation avec Dart).
postcss-loader
- Transforme le CSS avec PostCSS.cssnano
- Optimise et compresse PostCSS.postcss-preset-env
- Comportements pour PostCSS.
css-loader
- Résout et importe le CSS dans le JS.style-loader
- Injecte le CSS dans le DOM.eslint-loader
- Utilisation de ESLint avec Webpack.file-loader
- Copie de fichiers utilisés dans le JS.
- Plugins :
clean-webpack-plugin
- Supprime/nettoie le dossier de build.copy-webpack-plugin
- Copie des fichiers vers le dossier de build.html-webpack-plugin
- Génère un fichier HTML à partir d'un template.mini-css-extract-plugin
- Extrait le CSS dans des fichiers séparés.css-minimizer-webpack-plugin
- Optimise et minimise les ressources CSS.terser-webpack-plugin
- Minimise le Javascript.bundle-stats
- Analyse du build.
Transpilation ES6/JSX -> ES5.
@babel/core
- Transpile ES6+ vers une version JavaScript compatible partout.- Presets :
@babel/preset-env
- "Vocabulaire" ou règles de syntaxe pour Babel et l'ES6+.@babel/preset-react
- "Vocabulaire" ou règles de syntaxe pour Babel et le JSX (React).
- Plugins :
@babel/plugin-proposal-class-properties
- Rend possible les propriétés de classe.@babel/plugin-proposal-object-rest-spread
- Rend possible le déversement d'objets.
eslint
- ESLint, linter / analyseur de code JS.babel-eslint
- Analyse le code Babel.eslint-config-airbnb
- Configuration Airbnb pour ESLint.- Plugins :
eslint-plugin-import
- Analyse les imports de fichiers.eslint-import-resolver-alias
- Permet de définir des alias pour les dossiers.
eslint-plugin-react
- Analyse le code React.eslint-plugin-react-hooks
- Analyse les hooks de React.eslint-plugin-jsx-a11y
- Analyse l'accessibilité du JSX.
react
- React.react-dom
- Permet d'injecter des composants React dans le DOM.
prop-types
- Validation de props au sein du JSX.
# Avec yarn
yarn {script}
# Avec npm
npm run {script}
start
: Lance le serveur de développement.build
: Lance la construction de la version de production.lint
: Affiche les erreurs dans le code.lint:fix
: Tente de corriger certaines des erreurs dans le code.clean
: Supprime le dossierdist/
.clean:all
: Supprimedist/
,node_modules/
et les fichierslock
.
Linux
Ubuntu :
sudo apt install nodejs
Pour les autres distributions, vérifier https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions
Ou https://nodejs.org/en/download/package-manager/
Alternative via NVM
NVM est un outil permettant de gérer plusieurs installations de plusieurs versions de node
MacOS
- A télécharger directement sur https://nodejs.org/en/
Ou
- Installer homebrew
- Puis node avec la commande
brew install node
Windows
- A télécharger directement sur https://nodejs.org/en/
Ou
- Installer chocolatey
- Puis node avec la commande
choco install nodejs
Linux
Méthode via npm
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Si vous utilisez NVM
MacOS
- A télécharger directement sur https://nodejs.org/en/
Ou
Méthode via npm
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Windows
- A télécharger directement sur https://nodejs.org/en/
Ou
- Si vous utilisez chocolatey
choco upgrade nodejs
Suivre https://classic.yarnpkg.com/en/docs/install/ en fonction de votre OS