将 ASP.NET Core 3.1 与 Node.js 一起使用?

Mic*_*son 7 asp.net node.js asp.net-core nodeservices asp.net-core-3.1

我已经读到NodeServices 已被 ASP.NET Core 3.1 弃用。是否仍然可以使用 Node.js 将我的 JavaScript 文件构建到 中的dist文件夹中wwwroot

Jer*_*ney 5

根据NodeServices 包,它允许您“在 ASP.NET Core 应用程序中在运行时调用 Node.js 模块”(强调我自己的)。在GitHub 自述文件中更详细地重申了这一点:

此 NuGet 包提供了一种从 .NET 应用程序(通常是 ASP.NET Core Web 应用程序)调用 Node.js 代码的快速而可靠的方法。只要您想在 ASP.NET 中在运行时使用 Node/NPM 提供的功能,就可以使用它。

这完全独立于在构建时预编译、最小化或移动 JavaScript 文件的能力。

构建时间任务

你不需要——也不会——需要 NodeServices 来通过以下方式下载npm包依赖:

  • 本地工作站上的命令提示符,
  • Visual Studio的内置集成,或
  • 来自构建服务器上的npm任务(例如,Azure Pipelines上的任务)。

同样,要预编译、最小化客户端依赖项并将其从源目录移动到分发目录,您可以(继续?)使用Gulp.jsGruntWebPack等工具,它们都是在顶层运行的构建系统的 Node.js。

重要提示:此处的关键区别在于您不需要在运行时从 .NET 应用程序调用这些工具。您正在将Node.js 构建工具的输出合并到您的 .NET 应用程序中,但您没有将Node.js 代码作为.NET 应用程序的一部分执行

一个例外是,如果您使用 NodeService 在运行时动态执行这些构建任务。例如,如果您的应用程序配置了UseWebpackDevMiddleware()则将不再起作用。在这种情况下,您需要迁移到在部署之前(或期间)发生的构建过程。

网络包

如果您正在使用UseWebpackDevMiddleware(),那么我建议您考虑在本地配置Webpack。这应该是一个非常无缝的过渡。您可以通过 Webpack CLI 手动运行它使用 Visual Studio 扩展,甚至可能将其集成到您的构建过程中。就我个人而言,我在我的开发服务器上手动运行它,然后将它集成到我的 Azure Pipelines 构建过程中

或者,如果您真的想保持对 Webpack 文件的“及时”构建支持,您可以考虑将Webpack 开发服务器与 ASP.NET Core 结合使用,如将 webpack 构建与 ASP.NET Core 集成的最佳方式中所述3.0?.