NodeJS
Créé par Ryan Dahl en 2009. C'est un environnement d'éxecution Javascript multi-plateforme, permettant d'exécuter du javascript en dehors d'un contexte navigateur (par exemple: en mode serveur...).
Determiner le type de gestion de module
https://nodejs.org/api/packages.html#introduction
Dans le fichier package.json
:
// package.json
{
"type": "module" // commonjs
}
CommonJS
const fs = require('fs');
ES Modules
import fs from 'node';
Export
CommonJS
calculatrice.cjs
:
exports.add = function(a, b) {
return a + b;
}
exports.sub = function(a, b) {
return a - b;
}
exports.mul = function(a, b) {
return a * b;
}
exports.div = function(a, b) {
return b != 0 ? a / b : undefined;
}
// ------------------------------------
function add(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
function mul(a, b) {
return a * b;
}
function div(a, b) {
return b != 0 ? a / b : undefined;
}
module.exports = {
add,
sub,
mul,
div
}
app.cjs
// import module
const calculatrice = require('./calculatrice.cjs');
calculatrice.add(a, b);
calculatrice.sub(a, b);
calculatrice.mul(a, b);
calculatrice.div(a, b);
ES Modules
calculatrice.cjs
:
export function add(a, b) {
return a + b;
}
export function sub(a, b) {
return a - b;
}
export function mul(a, b) {
return a * b;
}
export function div(a, b) {
return b != 0 ? a / b : undefined;
}
// ------------------------------------
function add(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
function mul(a, b) {
return a * b;
}
function div(a, b) {
return b != 0 ? a / b : undefined;
}
export {
add,
sub,
div,
mul
}
app.cjs
// import module
import * as calculatrice from './calculatrice.mjs';
import { add, sub, mul, div } from './calculatrice.mjs';
calculatrice.add(a, b);
calculatrice.sub(a, b);
calculatrice.mul(a, b);
calculatrice.div(a, b);
Créer un nouveau projet
1 - Lancer npm init qui va poser un ensemble de question afin d'initialiser le projet NodeJS. Un fichier package.json
sera créé à la fin.
npm init
package name: (tp2)
version: (1.0.0) 0.0.1
description: Projet TP 2
entry point: (index.js) app.js
test command:
git repository:
keywords: tp node js
author: Thomas CILES
license: (ISC)
Résultat :
// package.json
{
"name": "tp2",
"version": "0.0.1",
"description": "Projet TP 2",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"tp",
"node",
"js"
],
"author": "Thomas CILES",
"license": "ISC"
}
Installer une dépendance
Une dépendance:
npm i french-ssn
Une dépendance de développement:
npm i -D eslint
Cela à pour effet de rajouter les dépendances dans le fichier package.json
dans les sections dependencies
et devDependencies
:
// ....
"dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"typescript": "~5.6.2"
},
// ....
de créer un fichier package-lock.json
avec les metadata(version, checksum, url...) des packages installés. Ce fichier est autogénéré et ne doit pas être modifier.
// ...
"node_modules/react": {
"version": "19.1.0",
"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "19.1.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.26.0"
},
"peerDependencies": {
"react": "^19.1.0"
}
},
// ...
enfin un dossier node_modules
a été créé et contient le code source des modules.
Supprimer une dépendance
npm remove ma-dependance