我使用 npm 来管理我的 ASP.NET 核心应用程序所需的 jQuery、 Bootstrap、 Font Awesome 和类似的客户端库。
我使用的方法是从向项目添加 package.json 文件开始的,它看起来像这样:
{
"version": "1.0.0",
"name": "myapp",
"private": true,
"devDependencies": {
},
"dependencies": {
"bootstrap": "^3.3.6",
"font-awesome": "^4.6.1",
"jquery": "^2.2.3"
}
}
Npm 将这些包恢复到 node _ module 文件夹中,该文件夹与项目目录中的 wwwroot 处于同一级别:
由于 ASP.NET Core 提供来自 wwwroot 文件夹的静态文件,而 node _ module 不在这个文件夹中,所以我必须做一些修改才能使其正常工作,第一个修改是: 添加应用程序。UseFileServer 就在应用程序之前。我的 Startup.cs 文件中的 UseStaticFiles:
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"node_modules")),
RequestPath = new PathString("/node_modules"),
EnableDirectoryBrowsing = true
});
app.UseStaticFiles();
和第二个,包括 project.json 文件中 PublishOptions 中的 node _ module:
"publishOptions": {
"include": [
"web.config",
"wwwroot",
"Views",
"node_modules"
]
},
这在我的开发环境中是可行的,当我将它部署到 Azure 应用服务实例中时也是可行的,jquery、 bootstrap 和 font-Awesome 静态文件得到了很好的服务,但是我不确定这个实现是否可行。
做这件事的正确方法是什么?
这个解决方案是在从几个来源收集了大量信息并尝试了一些不起作用的信息之后提出来的,而且必须从 wwwroot 外部提供这些文件似乎有点奇怪。
如有任何建议,我们将不胜感激。