TP 1
Installation de l'environnement
Prérequis
Vérifiez que vous avez les éléments suivants d’installés sur votre poste :
- Node v6 ou plus avec la commande npm –v,
- Git, nous l’utiliserons pour récupérer le projet initial,
- Webstorm (ou un autre IDE)
Installation
Initialisation du projet
Créez un nouveau projet dans votre IDE. Puis dans le terminal, placez-vous sur votre nouveau projet et lancez la commande suivante :
npm init
Suivez le guide d'initialisation de la commande. Elle va créer le fichier
package.json
avec les informations du projet.
Installation des modules
Maintenant nous allons installer les modules nécessaires à un projet TypeScript.
Toujours dans le terminal lancez la commande suivante :
npm install -g typescript@2
npm install --save @types/jquery materialize-css
npm install --save-dev connect-history-api-fallback http-proxy-middleware lite-server
tsc --init
La commande tsc --init
va créer un nouveau fichier tsconfig.json
. Ce fichier contient les informations nécessaire
au compilateur TypeScript pour compiler nos fichiers sources.
En l'état, il nous manque quelques options de compilation dans le tsconfig.json
.
Voici les options à reporter dans votre tsconfig.json
:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": false,
"lib": [
"es6",
"dom",
"es2015.collection"
],
"typeRoots": "./node_modules/@types",
"experimentalDecorators":true,
"emitDecoratorMetadata": true,
"sourceMap": true,
"declaration": false
},
"exclude": ["node_modules"]
}
Votre projet est prêt pour compiler du TypeScript
Création du serveur de développement
Nous allons maintenant mettre en place le serveur de développement.
A la racine de projet, créer le fichier bs-config.js et collez le script suivant :
var proxyMiddleware = require('http-proxy-middleware');
var fallbackMiddleware = require('connect-history-api-fallback');
module.exports = {
"port": 8000,
"files": [
"./webapp/**/*.{html,htm,css,js}",
"./node_modules/**/*.{html,htm,css,js}"
],
"server": {
"baseDir": "webapp",
"routes": {
"/node_modules": "node_modules"
},
middleware: {
1: proxyMiddleware('/api', {
target: 'http://futurlogement5.azurewebsites.net',
changeOrigin: true // for vhosted sites, changes host header to match to target's host
}),
2: fallbackMiddleware({
index: '/index.html',
verbose: true
})
}
}
};
Ensuite il vous faut éditer le package.json
et ajouter ceci :
{
"scripts": {
"serve": "lite-server"
}
}
scripts
permet d'ajouter de nouvelle commande NPM qui peuvent être appelées en ligne de commande avecnpm run [nom cmd]
.
Notre serveur de développement est prêt. Il nous reste plus qu'à créer un dossier webapp
avec une première page index.html
.
Création de l'application web
Voici à quoi la page d'index doit ressembler :
<!DOCTYPE html>
<html lang="en">
<head>
<title>TP</title>
<!--Import Google Icon Font-->
<link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="node_modules/materialize-css/bin/materialize.css" media="screen,projection"/>
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<app>
</app>
<!-- vendor -->
<script type="text/javascript" src="node_modules/materialize-css/bin/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="node_modules/materialize-css/bin/materialize.js"></script>
<!-- end vendor -->
<script type="text/javascript" src="scripts/app.js"></script>
</body>
</html>
Ici il nous manque le script app.js
. Notez que dans la page d'index nous incluerons toujours le fichier javascript généré par TypeScript et non
le fichier app.ts
.
Dans le dossier scripts
, créer un nouveau fichier app.ts
.
L'exercice sera d'intercepter la balise app
et d'y afficher un HELLO WORLD
avec jQuery.
Note : pour lancer votre server
npm run serve
.Note 2 : pour compiler votre fichier TypeScript
tsc
.Correction du TP : tp1-installation