Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
kb_it:nodejs [2022/01/07 03:04] – ↷ Page déplacée de wiki:kb_it:nodejs à kb_it:nodejs befekb_it:nodejs [2022/11/19 16:31] (Version actuelle) befe
Ligne 2: Ligne 2:
  
 ===== npm ===== ===== npm =====
 +
 +==== Initialisation d'un projet express.js ====
 +
 +Source : https://dev.to/nyctonio/how-to-make-a-typescript-nodejs-express-project-with-eslint-ejs-and-nodemon-hot-reload-4e0b
 +
 +<code bash>
 +yarn init -y
 +yarn add -D eslint @types/node @types/express typescript ts-node-dev
 +mkdir src
 +touch src/app.ts
 +</code>
 +
 +src/app.ts :
 +<code javascript>
 +import express from 'express';
 +const app = express();
 +const port = 3000;
 +app.use(express.json());
 +app.use(express.static("public"));
 +app.set("view engine", "ejs");
 +
 +app.get('/', (req, res) => {
 +  res.send('Hello World !');
 +});
 +
 +app.listen(port, () => {
 +  return console.log(`http://localhost:${port}`);
 +});
 +</code>
 +
 +<code bash>
 +touch tsconfig.json
 +</code>
 +
 +tsconfig.json :
 +<code json>
 +{
 +  "compilerOptions": {
 +    "module": "commonjs",
 +    "esModuleInterop": true,
 +    "target": "es6",
 +    "moduleResolution": "node",
 +    "sourceMap": true,
 +    "outDir": "dist"
 +  },
 +  "lib": [
 +    "es2015"
 +  ]
 +}
 +</code>
 +
 +<code bash>
 +yarn eslint --init
 +</code>
 +
 +package.json :
 +<code json>
 +{
 +  "name": "app",
 +  "version": "1.0.0",
 +  "description": "",
 +  "keywords": [],
 +  "author": "",
 +  "license": "MIT",
 +  "main": "dist/app.js",
 +  "scripts": {
 +    "test": "echo \"Error: no test specified\" && exit 1",
 +    "lint": "eslint . --ext .ts",
 +    "start": "ts-node-dev src/app.ts"
 +  },
 +  "devDependencies": {
 +    "@types/express": "^4.17.14",
 +    "@types/node": "^18.11.9",
 +    "@typescript-eslint/eslint-plugin": "^5.43.0",
 +    "@typescript-eslint/parser": "^5.43.0",
 +    "eslint": "^8.28.0",
 +    "ts-node-dev": "^2.0.0",
 +    "typescript": "^4.9.3"
 +  },
 +  "dependencies": {
 +    "ejs": "^3.1.8",
 +    "express": "^4.18.2"
 +  }
 +}
 +</code>
 +
 +<code bash>
 +yarn start
 +</code>
  
 ==== Commandes utiles ==== ==== Commandes utiles ====
Ligne 25: Ligne 114:
 git ls-remote https://exemple.com/user/repo git ls-remote https://exemple.com/user/repo
 npm install git+https://exemple.com/user/repo npm install git+https://exemple.com/user/repo
 +</code>
 +
 +=== Ecriture d'un module avec mise en cache de données ===
 +
 +<code javascript>
 +import fs from 'node:fs';
 +
 +let isDockerCached;
 +
 +function hasDockerEnv() {
 + try {
 + fs.statSync('/.dockerenv');
 + return true;
 + } catch {
 + return false;
 + }
 +}
 +
 +function hasDockerCGroup() {
 + try {
 + return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');
 + } catch {
 + return false;
 + }
 +}
 +
 +export default function isDocker() {
 + // TODO: Use `??=` when targeting Node.js 16.
 + if (isDockerCached === undefined) {
 + isDockerCached = hasDockerEnv() || hasDockerCGroup();
 + }
 +
 + return isDockerCached;
 +}
 </code> </code>