7

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

4

1 回答 1

5

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

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

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

构建时间任务

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

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

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

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

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

网页包

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

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

于 2020-04-02T19:06:14.633 回答