Я использую npm для управления jQuery, Bootstrap, Font Awesome и аналогичных клиентских библиотек, которые мне нужны для моего основного приложения ASP.NET.
Подход, который работал у меня, начинался с добавления в проект файла 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_modules, которая находится на том же уровне, что и wwwroot в каталоге проекта:
Поскольку ASP.NET Core обслуживает статические файлы из папки wwwroot, а node_modules не существует, мне пришлось внести пару изменений, чтобы сделать эту работу, первая: добавление app.UseFileServer прямо перед приложением. UseStaticFiles в моем файле Startup.cs:
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"node_modules")),
RequestPath = new PathString("/node_modules"),
EnableDirectoryBrowsing = true
});
app.UseStaticFiles();
и второй, в том числе node_modules в моих публикацияхOpions в файле project.json:
"publishOptions": {
"include": [
"web.config",
"wwwroot",
"Views",
"node_modules"
]
},
Это работает в моей среде разработки, и это также работает, когда я развертываю его в своем экземпляре службы Azure App Service, файлы jquery, bootstrap и font-awesome статические файлы хорошо обслуживаются, но я не уверен в этой реализации.
Каков правильный подход для этого?
Это решение появилось после сбора большого количества бит информации из нескольких источников и попыток некоторых, которые не работали, и кажется немного странным, что они должны обслуживать эти файлы извне wwwroot.
Приветствуются любые советы.