Skip to content
Snippets Groups Projects
Commit cb6e5db3 authored by Wilson JALLET's avatar Wilson JALLET :money_with_wings:
Browse files

Implémentation syntaxe ES6

Les fichiers source sont réécrits avec 'import'. Webpack est configuré.

Le README est mis à jour avec les commandes à utiliser.
parent 233cadef
No related branches found
No related tags found
No related merge requests found
*.js text= lf
\ No newline at end of file
* text=auto
# JS files will have LF line endings
# because of linting
*.js text eol= lf
\ No newline at end of file
......@@ -59,3 +59,6 @@ typings/
# next.js build output
.next
# VS Code config files
.vscode/
\ No newline at end of file
......@@ -16,4 +16,5 @@ cache:
test_async:
script:
- npm install
- npm run build
- npm test
......@@ -12,17 +12,37 @@ puis installez les dépendences JavaScript avec
## Dépendances
Il y a deux types de dépendances : les dépendances _normales_ (pour que le serveur tourne en prod grosso modo), et les dépendances dév, qui servent à tester par exemple. Pour avoir la liste des dépendances, allez lire le fichier `package.json`. Express est un exemple de dépendance normale, nodemon et ESLint (voir infra) sont des dépendances dev.
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`).
## Structure
Les fichiers source se situent dans le dossier `src`.
Pour l'instant, le serveur utilisé est [express.js](https://expressjs.com/), le code est dans `server.js`. Le point d'entrée de l'application est `index.js`.
Pour l'instant, le serveur utilisé est [express.js](https://expressjs.com/) ; le serveur Express est configuré dans `server.js` puis lancé sur le port 8888 dans `index.js`.
Pour le faire tourner en mode normal, utilisez `npm start` ou de façon équivalente `node src/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.0 de Node ne comprend que le standard ES5, qui gère les imports avec `require()`.
Pour le faire tourner en test, `npm test` démarre [nodemon](https://nodemon.io/), qui démarre le serveur dans `index.js` et le redémarre automatiquement quand vous modifiez un fichier.
Le fichier serveur que Node reconnaît est `dist/bundle.js`.
## 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 `dist/bundle.js` qui est suit la syntaxe ES5 compatible Node. Pour ça, on utilise
* `npm run build` qui exécute la commande `webpack` avec le fichier de configuration `webpack.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 serveur `bundle.js` en mode prod sur le port 8888 (donc il faut consulter https://localhost:8888)
* `npm test` le démarre avec [nodemon](https://nodemon.io/), outil dév qui redémarre automatiquement le serveur dans `bundle.js` dès que celui-ci est modifié.
Donc, combiner `npm run watch` et `npm test` permet de recompiler le serveur __et__ le redémarrer automatiquement dès qu'il y a une modification.
## ESLint
......@@ -30,7 +50,9 @@ On utilisera ESLint pour standardiser le code : un ensemble de règles de style
Pour faire valider un fichier `file.js` par ESLint, utilisez
npm eslint file.js
npm run eslint file.js
et avec l'option `--fix` pour corriger le fichier.
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.
......
This diff is collapsed.
This diff is collapsed.
......@@ -2,10 +2,11 @@
"name": "sigma-backend",
"version": "0.0.1",
"description": "Backend of sigma, the new Frankiz",
"main": "index.js",
"main": "dist/bundle.js",
"dependencies": {
"body-parser": "^1.18.2",
"express": "^4.16.2",
"fs": "0.0.1-security",
"graphql": "^0.13.1",
"knex": "^0.14.4",
"morgan": "^1.9.0",
......@@ -20,13 +21,14 @@
"eslint-plugin-promise": "^3.6.0",
"eslint-plugin-standard": "^3.0.1",
"nodemon": "^1.15.1",
"webpack": "^3.11.0",
"webpack-dev-server": "^2.11.1"
"webpack": "^3.11.0"
},
"scripts": {
"start": "node src/index.js",
"test": "./node_modules/.bin/nodemon src/index.js",
"eslint": "./node_modules/.bin/eslint"
"start": "node dist/bundle.js",
"eslint": "eslint",
"build": "webpack",
"watch": "webpack --watch",
"test": "nodemon --watch dist dist/bundle.js"
},
"repository": {
"type": "git",
......
const server = require('./server')
import server from './server'
server.get('/', function(req, res) {
res.send('Hello, world !')
res.send('Hello, world ! This is server talking to you live from Omaha on port 8888 !')
})
// define port server is to listen on
......
const express = require('express')
const bodyParser = require('body-parser')
import express from 'express'
import bodyParser from 'body-parser'
import morgan from 'morgan'
let server = express()
var server = express()
server.use(bodyParser.json())
server.use(bodyParser.urlencoded({
extended: false
}))
module.exports = server
server.use(morgan('dev'))
export default server
const path = require('path')
var config = {
entry: './src/index.js',
target: 'node',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
}
}
module.exports = config
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment