Nest CLI et scripts
Cette section fournit des informations supplémentaires sur la façon dont la commande nest
interagit avec les compilateurs et les scripts pour aider le personnel DevOps à gérer l’environnement de développement.
Une application Nest est une application TypeScript standard qui doit être compilée en JavaScript avant de pouvoir être exécutée. Il existe plusieurs manières d’accomplir cette étape de compilation, et les développeurs ou équipes sont libres de choisir la méthode qui fonctionne le mieux pour eux. Dans cet esprit, Nest fournit un ensemble d’outils prêts à l’emploi qui cherchent à faire ce qui suit :
- Fournir un processus de construction/exécution standard, disponible en ligne de commande, qui “fonctionne tout simplement” avec des valeurs par défaut raisonnables.
- Garantir que le processus de construction/exécution est ouvert, afin que les développeurs puissent accéder directement aux outils sous-jacents pour les personnaliser en utilisant des fonctionnalités et options natives.
- Rester un cadre TypeScript/Node.js complètement standard, de sorte que l’ensemble du pipeline de compilation/déploiement/exécution puisse être géré par tout outil externe que l’équipe de développement choisit d’utiliser.
Cet objectif est accompli grâce à une combinaison de la commande nest
, d’un compilateur TypeScript installé localement et de scripts package.json
. Nous décrivons ci-dessous comment ces technologies fonctionnent ensemble. Cela devrait vous aider à comprendre ce qui se passe à chaque étape du processus de construction/exécution et comment personnaliser ce comportement si nécessaire.
Le binaire nest
Le nest
est une commande à niveau OS (c’est-à-dire qu’elle s’exécute à partir de la ligne de commande de l’OS). Cette commande englobe en réalité trois domaines distincts, décrits ci-dessous. Nous recommandons d’exécuter les sous-commandes de construction (nest build
) et d’exécution (nest start
) via les scripts de package.json
fournis automatiquement lors qu’un projet est initié (voir typescript starter si vous souhaitez commencer par cloner un dépôt, au lieu d’exécuter nest new
).
Construction
nest build
est un wrapper au-dessus du compilateur standard tsc
ou du compilateur swc
(pour projets standards) ou du bundler webpack utilisant le ts-loader
(pour monorepos). Il n’ajoute aucune autre fonctionnalité ou étape de compilation, sauf pour gérer tsconfig-paths
par défaut. La raison de son existence est que la plupart des développeurs, en particulier lorsqu’ils débutent avec Nest, n’ont pas besoin d’ajuster les options du compilateur (par exemple, le fichier tsconfig.json
), ce qui peut parfois être délicat.
Voir la documentation sur nest build
pour plus de détails.
Exécution
nest start
s’assure simplement que le projet a été construit (identique à nest build
), puis invoque la commande node
de manière portable et simple pour exécuter l’application compilée. Tout comme les constructions, vous êtes libre de personnaliser ce processus selon vos besoins, soit en utilisant la commande nest start
et ses options, soit en la remplaçant complètement. L’ensemble du processus est un pipeline de construction et d’exécution d’application TypeScript standard, et vous êtes libre de gérer le processus en tant que tel.
Voir la documentation sur nest start
pour plus de détails.
Génération
Les commandes nest generate
, comme son nom l’indique, génèrent de nouveaux projets Nest ou des composants à l’intérieur d’eux.
Scripts de package
L’exécution des commandes nest
au niveau de la ligne de commande OS nécessite que le binaire nest
soit installé globalement. C’est une fonctionnalité standard de npm, et cela échappe au contrôle direct de Nest. Une conséquence de cela est que le binaire nest
installé globalement n’est pas géré comme une dépendance de projet dans package.json
. Par exemple, deux développeurs différents peuvent exécuter deux versions différentes du binaire nest
. La solution standard est d’utiliser des scripts de package afin de pouvoir traiter les outils utilisés dans les étapes de construction et d’exécution comme des dépendances de développement.
Lorsque vous exécutez nest new
, ou clonez le typescript starter, Nest peuple les scripts package.json
du nouveau projet avec des commandes comme build
et start
. Il installe également les outils de compilateur sous-jacents (comme typescript
) comme dépendances de développement.
Vous exécutez les scripts de construction et d’exécution avec des commandes comme :
$ npm run build
et
$ npm run start
Ces commandes utilisent les capacités de script npm pour exécuter nest build
ou nest start
en utilisant le binaire nest
installé localement. En utilisant ces scripts de package intégrés, vous avez une gestion complète des dépendances sur les commandes CLI de Nest*. Cela signifie qu’en suivant cet usage recommandé, tous les membres de votre organisation peuvent être assurés d’utiliser la même version des commandes.
*Cela s’applique aux commandes build
et start
. Les commandes nest new
et nest generate
ne font pas partie du pipeline de construction/exécution, donc elles fonctionnent dans un contexte différent et ne sont pas fournies avec des scripts package.json
intégrés.
Pour la plupart des développeurs/équipes, il est recommandé d’utiliser les scripts de package pour construire et exécuter leurs projets Nest. Vous pouvez totalement personnaliser le comportement de ces scripts via leurs options (--path
, --webpack
, --webpackPath
) et/ou personnaliser les fichiers d’options du compilateur tsc
ou webpack (par exemple, tsconfig.json
) selon les besoins. Vous êtes également libre d’exécuter un processus de construction complètement personnalisé pour compiler le TypeScript (ou même pour exécuter directement TypeScript avec ts-node
).
Compatibilité descendante
Parce que les applications Nest sont des applications TypeScript pures, les versions précédentes des scripts de construction/exécution de Nest continueront de fonctionner. Vous n’êtes pas obligé de les mettre à jour. Vous pouvez choisir de profiter des nouvelles commandes nest build
et nest start
lorsque vous êtes prêts, ou continuer à utiliser des scripts précédents ou personnalisés.
Migration
Bien que vous ne soyez pas obligé de faire des changements, vous voudrez peut-être migrer vers l’utilisation des nouvelles commandes CLI au lieu d’utiliser des outils tels que tsc-watch
ou ts-node
. Dans ce cas, installez simplement la dernière version de @nestjs/cli
, à la fois globalement et localement :
$ npm install -g @nestjs/cli$ cd /some/project/root/folder$ npm install -D @nestjs/cli
Vous pouvez ensuite remplacer les scripts
définis dans package.json
par ceux-ci :
"build": "nest build","start": "nest start","start:dev": "nest start --watch","start:debug": "nest start --debug --watch",