Sto usando npm per gestire le librerie client jQuery, Bootstrap, Font Awesome e simili di cui ho bisogno per la mia applicazione ASP.NET Core.
L'approccio che ha funzionato per me è iniziato aggiungendo un file package.json al progetto, che assomiglia a questo:
{
"version": "1.0.0",
"name": "myapp",
"private": true,
"devDependencies": {
},
"dependencies": {
"bootstrap": "^3.3.6",
"font-awesome": "^4.6.1",
"jquery": "^2.2.3"
}
}
npm ripristina questi pacchetti nella cartella node_modules che si trova allo stesso livello di wwwroot nella directory del progetto:
Poiché ASP.NET Core serve i file statici dalla cartella wwwroot e node_modules non è presente, ho dovuto apportare un paio di modifiche per farlo funzionare, il primo: l'aggiunta di app.UseFileServer subito prima di app.UseStaticFiles nel mio avvio. cs file:
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"node_modules")),
RequestPath = new PathString("/node_modules"),
EnableDirectoryBrowsing = true
});
app.UseStaticFiles();
e il secondo, includendo node_modules nelle mie publishOptions nel file project.json:
"publishOptions": {
"include": [
"web.config",
"wwwroot",
"Views",
"node_modules"
]
},
Funziona nel mio ambiente di sviluppo e funziona anche quando lo distribuisco nella mia istanza del servizio app di Azure, i file statici jquery, bootstrap e fantastici per i tipi di carattere vengono serviti bene, ma non sono sicuro di questa implementazione.
Qual è l'approccio giusto per farlo?
Questa soluzione è arrivata dopo aver raccolto molte informazioni da diverse fonti e provato alcune che non hanno funzionato, e sembra un po 'strano dover servire questi file dall'esterno di wwwroot.
Qualsiasi consiglio sarà molto apprezzato.
Bundler and Minifier
- Specificare che la fonte è Outside wwwroot e quando lo compili compila il JS in wwwroot. Questo è il modo corretto .. Non dovresti offrire contenuti da node_modules
node_modules
cartella. a) non è così che è progettato l'ecosistema b) è un rischio per la sicurezza, uno dei pacchetti installati potrebbe far trapelare informazioni sensibili. Il modo corretto è impostare una pipeline di costruzione (grunt / gulp / node / webpack) che pubblica file in una cartella src
o whatever
dedicata a servire file front-end statici