Tôi đang sử dụng npm để quản lý jQuery, Bootstrap, Font Awesome và các thư viện khách tương tự mà tôi cần cho ứng dụng ASP.NET Core của mình.
Cách tiếp cận phù hợp với tôi bắt đầu bằng cách thêm tệp package.json vào dự án, trông giống như sau:
{
"version": "1.0.0",
"name": "myapp",
"private": true,
"devDependencies": {
},
"dependencies": {
"bootstrap": "^3.3.6",
"font-awesome": "^4.6.1",
"jquery": "^2.2.3"
}
}
npm khôi phục các gói này vào thư mục node_modules ở cùng cấp với wwwroot trong thư mục dự án:
Vì ASP.NET Core phục vụ các tệp tĩnh từ thư mục wwwroot và node_modules không có ở đó, tôi đã phải thực hiện một vài thay đổi để thực hiện việc này, thay đổi đầu tiên: thêm app.UseFileServer ngay trước app.UseStaticFiles trong Khởi động của tôi. tệp cs:
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"node_modules")),
RequestPath = new PathString("/node_modules"),
EnableDirectoryBrowsing = true
});
app.UseStaticFiles();
và cái thứ hai, bao gồm node_modules trong PublishingOptions của tôi trong tệp project.json:
"publishOptions": {
"include": [
"web.config",
"wwwroot",
"Views",
"node_modules"
]
},
Điều này hoạt động trong môi trường phát triển của tôi và nó cũng hoạt động khi tôi triển khai nó cho phiên bản Azure App Service của mình, các tệp tĩnh jquery, bootstrap và font-awesome được phục vụ tốt, nhưng tôi không chắc về việc triển khai này.
Cách tiếp cận phù hợp để làm điều này là gì?
Giải pháp này được đưa ra sau khi thu thập rất nhiều bit thông tin từ một số nguồn và thử một số nguồn không hoạt động và có vẻ hơi kỳ lạ khi phải cung cấp các tệp này từ bên ngoài wwwroot.
Bất kỳ lời khuyên sẽ được đánh giá rất cao.
Bundler and Minifier
- Chỉ định nguồn là Bên ngoài wwwroot và khi bạn xây dựng nó sẽ xây dựng JS vào wwwroot. Đó là nội dung được con đường đúng đắn .. Bạn không nên phục vụ từ node_modules
node_modules
thư mục. a) đó không phải là cách hệ thống sinh thái được thiết kế b) đó là một rủi ro bảo mật, một trong các gói đã cài đặt của bạn có thể làm rò rỉ thông tin nhạy cảm. Cách thích hợp là thiết lập một đường dẫn xây dựng (grunt / gulp / node / webpack) xuất bản các tệp vào một src
hoặc whatever
thư mục dành riêng để phục vụ các tệp front-end tĩnh