27-2 Créer un projet et démarrer le serveur d'API
Pour créer un projet, nous pouvons utiliser le CLI nest installé précédemment via l'invite de commande.
Imaginons que nous voulions créer l'API pour l'application Houdini. Assurez-vous d'être dans un dossier où vous désirez mettre le dossier du projet d'API.
- Créer le projet via le
CLIde nest
nest new houdini-api
- Sélectionnez
npmcommepackage manager
? Which package manager would you ❤️ to use? (Use arrow keys)
❯ npm
- Soyez patient, l'installation peut prendre un certain temps
Démarrer le serveur manuellement
Pour démarrer le serveur manuellement, assurez-vous d'être dans le dossier du projet d'API que vous venez de créer (ex.: houdini-api) et entrez la commande suivante:
npm run start
Cela devrait avoir démarré le serveur. Pour démarrer en mode développement et en quelque sorte redémarrer automatiquement le serveur lors de changements, vous pouvez faire:
npm run start:dev
Démarrer le serveur via WebStorm
Pour démarrer le projet à même WebStorm, via la flèche verte 'Play', il faut configurer l'action de démarrage en créant une nouvelle configuration.
-
Assurez-vous que le serveur de développement ne roule pas (celui que vous auriez pu avoir démarré manuellement avec
npm run start:dev) -
Ouvrez le projet nouvellement créé via
WebStorm. -
Sous l'onglet
Current file, choisirEdit Configurations
-
Cliquer sur
Add new...
-
Choisir
npm
-
Choisir
runsouscommandetstart:devsousscript
-
Appuyer sur
applyet ensuiteOK -
Lancez le serveur de développement via la flèche verte
play.
Règles eslint
Par défaut, Nest fourni un fichier de base eslint pour garantir une certaine uniformité de la syntaxe de code. De plus, le plugin prettier est installé et utilisé dans les règles eslint, mais ce dernier est beaucoup trop rigide.
Ainsi, modifiez votre fichier eslint.config.mjs par celui-ci pour désactiver prettier, tout en ajoutant certaines règles eslint:
// @ts-check
import eslint from '@eslint/js';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
import globals from 'globals';
import tseslint from 'typescript-eslint';
export default tseslint.config(
{
ignores: ['eslint.config.mjs'],
},
eslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
{
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-floating-promises': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn',
'max-len': ['error', {
code: 100,
comments: 80,
ignorePattern: '^import .*'
}],
'semi': ['error', 'always'],
'comma-dangle': ['error', {
"arrays": 'always-multiline',
"objects": 'only-multiline',
"imports": 'never',
"exports": 'never',
"functions": 'never'
}],
'object-curly-spacing': ['error', 'always'],
'linebreak-style': 0
},
},
);