Npm 在.NET核心应用程序中导入Javascript包的最佳方法

Npm 在.NET核心应用程序中导入Javascript包的最佳方法,npm,.net-core,libman,Npm,.net Core,Libman,我是.NET核心框架的新手,目前正在设置一个使用Razor页面和一些JavaScript交互的仪表板。对于我创建的几个示例项目,没有一个从一开始就带有包管理器,imho需要它来保持应用程序的可维护性。来自Node.js一个RubyonRails背景,我的默认解决方案是NPM(如果需要的话,也可以是纱线) 但我注意到,大约两年前,Microsoft将Node从.Net的基本Docker映像中排除(请参见此处) 这让我质疑我使用NPM的解决方案,我开始寻找替代方案。我发现可以通过将Javascrip

我是.NET核心框架的新手,目前正在设置一个使用Razor页面和一些JavaScript交互的仪表板。对于我创建的几个示例项目,没有一个从一开始就带有包管理器,imho需要它来保持应用程序的可维护性。来自Node.js一个RubyonRails背景,我的默认解决方案是NPM(如果需要的话,也可以是纱线)

但我注意到,大约两年前,Microsoft将Node从.Net的基本Docker映像中排除(请参见此处)

这让我质疑我使用NPM的解决方案,我开始寻找替代方案。我发现可以通过将Javascript库包装在Nuget包中并通过Nuget安装它们来安装Javascript库。但我不太愿意这样做,因为我已经看到这种模式在RubyonRails中引起了问题。它增加了一个额外的维护层,通常是不再维护的Ruby Gems,这意味着您无法移动到最新版本

然后我们有了Libman,它集成到visualstudio()中并从中提取包,我相信它包含的包更少(但根据微软的说法,它拥有您所需要的一切)。但他们自己的博客()说:

LibMan不是一个包管理系统。如果您乐于使用npm/纱线/(或其他),我们鼓励您继续这样做。LibMan并不是作为这些工具的替代品开发的。例如,我们为ASP.NET Core提供的SPA模板(即Angular和React)依赖于npm和WebPack,我们没有计划改变这一点

然后我们剩下的是Bower,它不再是一个选项,来自:

…嘘!在维护Bower的同时,我们建议在前端项目中使用Thread和Webpack或Parcel阅读如何迁移


所以我想知道,对于monolith应用程序来说,NPM或Thread仍然是正确的选择吗?如果是的话,为什么微软决定将Node从它们的基础图像中排除?

你提到了哪一种效果很好,但您需要将其配置为下载软件包,该软件包是NPM的CDN,并且应该包含您在NPM上可以找到的所有内容。

您提到的那些工作正常,但您需要将其配置为下载软件包,该软件包是NPM的CDN,并且应该包含您在NPM上可以找到的所有内容。

您不需要使用Microsoft的默认Docker映像。为了使用像纱线这样的东西,这就是我所使用的,只需创建您自己的DockerHub图像,该图像构建在基础图像之上,以包含节点。是的,这就是我所做的,但我有点不确定是否应该朝着这个方向走。也许我遗漏了一些东西,而微软也给出了一些实施其他东西的“建议”。但他们似乎不想太固执己见,来自RubyonRails的背景可能会让人感到困惑。你不需要使用微软默认的Docker镜像。为了使用像纱线这样的东西,这就是我所使用的,只需创建您自己的DockerHub图像,该图像构建在基础图像之上,以包含节点。是的,这就是我所做的,但我有点不确定是否应该朝着这个方向走。也许我遗漏了一些东西,而微软也给出了一些实施其他东西的“建议”。但他们似乎不想太固执己见,来自RubyonRails的背景,这可能会造成混乱。