web-dev-qa-db-fra.com

Vous utilisez ASP.NET Core 3.1 avec Node.js?

J'ai lu que NodeServices est obsolète pour ASP.NET Core 3.1 . Est-il toujours possible d'utiliser Node.js pour créer mes fichiers JavaScript dans le dossier dist de wwwroot?

3
Michael Thompson

Selon le package NodeServices , il vous permet "d'appeler les modules Node.js à runtime dans les applications ASP.NET Core "(c'est moi qui souligne). Ceci est réitéré plus en détail sur GitHub ReadMe :

Ce package NuGet fournit un moyen rapide et robuste d'appeler du code Node.js à partir d'une application .NET (généralement des applications Web ASP.NET Core). Vous pouvez l'utiliser chaque fois que vous souhaitez utiliser la fonctionnalité fournie par Node/NPM à runtime dans ASP.NET.

Cela est entièrement indépendant de la capacité à par ex. précompilez, réduisez ou déplacez les fichiers JavaScript à au moment de la construction .

Tâches de construction

Vous n'avez pas - et n'aurez pas - besoin de NodeServices pour télécharger les dépendances de package npm via:

  • L'invite de commande sur votre poste de travail local,
  • À partir de l'intégration intégrée de Visual Studio , ou
  • À partir d'une tâche sur votre serveur de génération (par exemple, la tâche npm sur Azure Pipelines ).

De même, pour précompiler, minimiser et déplacer les dépendances côté client de leur répertoire source vers leur répertoire de distribution, vous pouvez (continuer?) Utiliser des outils comme Gulp.js , Grunt , ou WebPack , qui sont chacun des systèmes de construction qui fonctionnent au-dessus de Node.js.

Important: La distinction critique ici est que vous n'avez pas besoin d'appeler ces outils à runtime depuis votre .NET application. Vous incorporez le output de vos outils de compilation Node.js dans votre application .NET, mais vous n'êtes pas exécutant Node.js code dans le cadre de votre application .NET.

La seule exception à cela est si vous utilisez NodeService pour effectuer dynamiquement ces tâches de génération au moment de l'exécution. Par exemple, si votre application est configurée avec UseWebpackDevMiddleware() alors cela ne fonctionnera plus. Dans ce cas, vous devrez migrer vers un processus de génération qui se produit avant (ou pendant) le déploiement.

Webpack

Si vous êtes en utilisant UseWebpackDevMiddleware(), alors je vous recommande de vous pencher sur la configuration de Webpack localement. Cela devrait être une transition assez transparente. Vous pouvez l'exécuter manuellement via l'interface de ligne de commande Webpack , tiliser une extension Visual Studio , ou même l'intégrer potentiellement dans votre processus de génération. Personnellement, je l'exécute manuellement sur mon serveur de développement, puis l'intègre dans mon processus de construction Azure Pipelines .

Sinon, si vous voulez vraiment maintenir la prise en charge de la construction "juste à temps" pour les fichiers Webpack, vous pouvez envisager d'utiliser serveur de développement Webpack en conjonction avec ASP.NET Core, comme indiqué dans La meilleure façon d'intégrer des builds Webpack avec ASP.NET Core 3.0? .

4
Jeremy Caney