Backend Sigma
Ce dépôt contient le backend de Sigma, le successeur de Frankiz.
Pour obtenir une copie de ce dépôt, clonez-le avec
git clone git@gitlab.binets.fr:br/sigma-backend.git
ou git clone https://gitlab.binets.fr/br/sigma-backend.git
, puis installez les dépendences JavaScript avec npm install
.
Dépendances
Une dépendance, c'est un librairie JavaScript dont dépend le code source, soit pour le faire tourner soit pour faire tourner les outils dévs. Les dépendances dév servent à tester par exemple. On trouve la liste des dépendances dans package.json
. Express est un exemple de dépendance normale, nodemon et ESLint (voir infra) sont des dépendances dev (devDependencies
).
Les dépendances s'installent avec npm install
. Par défaut, toutes les dépendances sont installées. Si la variable NODE_ENV
est configurée (vérifier avec la commande echo "$NODE_ENV"
),
- la valeur
development
installe tout - la valeur
production
n'installe pas les dépendances dév
Certaines d'entre elles comme KnexJS ou Webpack devraient être installées globalement :
npm install -g knex
npm install -g webpack
npm install -g eslint
Structure
Les fichiers source se situent dans le dossier src
.
Le serveur utilisé est express.js ; il est configuré dans server.js
puis lancé sur le port 8888 dans index.js
.
La syntaxe adoptée est JavaScript ES6, un standard moderne (2015) de JavaScript. Il permet d'importer des dépendances en utilisant le mot-clé import
, ce que le serveur Node.js ne comprend pas puisque la version 8 de Node ne comprend que le standard ES5 (2009), qui gère les imports avec require()
.
Node comprend le code dans build/bundle.js
, donc on le lance dessus après avoir compilé ce fichier.
Base de données
La base de donnée utilisée est PostgreSQL.
Le schéma de la BDD est géré par Knex. La config de Knex est dans knexfile.js
: c'est un objet JSON qui précise la BDD à lequelle se connecter, l'utilisateur sous lequel elle est, le mot de passe...
-
knex migrate:make migration_name
crée une migration dansmigrations/
: le nom du fichier estmigration_name.js
avec la date et l'heure en préfixe -
knex migrate:latest
met à jour le schéma de la BDD -
knex seed:make filename
crée un seedseeds/filename
-
knex seed:run
insère les seeds dans la BDD
Seeds
Un fichier seed permet d'insérer des données dans la BDD.
Scripts
Les scripts sont des instructions en ligne de commande que l'on peut faire tourner avec la commande npm run
. Ils sont définis dans package.json
.
Transpiler le serveur
On utilisera Webpack pour transpiler le fichier source src/index.js
en build/bundle.js
qui est suit la syntaxe ES5 compatible Node. Pour ça, on utilise
-
npm run build
qui exécute la commandewebpack
avec le fichier de configurationwebpack.config.js
, ou -
npm run watch
qui recompile automatiquement dès que le code est modifié.
Démarrer le serveur
Pour faire tourner le serveur, il y a deux options :
-
npm start
fait tourner le serveurbundle.js
en mode prod sur le port 3000 (donc il faut consulter https://localhost:3000) -
npm test
le démarre avec nodemon, outil dév qui redémarre automatiquement le serveur dansbundle.js
dès que celui-ci est modifié.
Donc, lancer npm run watch
dans un terminal et npm test
dans un autre permet de recompiler le serveur et le redémarrer automatiquement dès qu'il y a une modification.
ESLint
On utilisera ESLint pour standardiser le code : un ensemble de règles de style pour le code sont appliquées, et quelques-unes d'entre elles sont dans le fichier .eslintrc.json
. Pour l'instant, la config ESLint impose d'utiliser quatre espaces pour les indentations et d'utiliser des points-virgule en fin de ligne.
Il est préférable de l'installer globalement avec
npm install -g eslint
Pour faire valider les fichiers source par ESLint, utilisez
npm run lint
qui fait appel au script eslint src/
défini dans le package.json
. L'option --fix
permet de corriger les fichiers.
Sinon, si vous utilisez Atom ou Visual Studio Code pour éditer votre code, il existe des plugins qui font tourner ESLint en live sur le code et vérifient que tout est en ordre.
Pour mieux comprendre ESLint, référez-vous à la doc.
Documentation
La documentation est compilée avec JSDoc : le script pour le faire tourner est
npm run doc
et les fichiers compilés se situent dans doc/
.