10

Come accedere alla cartella node_modules che non è inclusa nel file di soluzione di Visual Studio dal wwwroot in cui è inserito il mio index.html. Quel file index.html deve fare riferimento ai pacchetti npm installati come angular.js.Come accedere alla cartella node_modules da wwwroot nel progetto vnext di asp.net

Ma come?

Non voglio copiare l'intera cartella node_modules in wwwroot. Questi sono non i file a vivere lì ...

io non voglio includere la cartella node_modules alla soluzione perché questo rallenta tutto e riagganciare ...

Sembra sviluppo Frontend non appartiene a VS ...

risposta

10

Non si deve accedere ai file al di fuori di wwwroot. La cartella wwwroot è la cartella pubblica accessibile dall'esterno, quando la si ospita.

Tutto su di esso, è off-limits.

Il processo di pubblicazione tipica è che avete un compito sorso o grugnito che viene eseguito quando il webproject ASP.NET viene compilato o pubblicato, sarebbe eseguire i compiti lì e copiare i file necessari all'interno della cartella wwwroot, vale a dire wwwroot/libs o wwwdata/js.

Ovviamente è anche possibile copiare manualmente i file, ma è piuttosto brutto, specialmente quando si aggiorna molte dipendenze è difficile tenere traccia manualmente.

Mentre non è visualizzato nella soluzione (solo indirettamente, nella sezione Dependencies/npm), è ancora possibile renderlo visibile premendo il pulsante "Mostra tutti i file" in cima a Esplora soluzioni e copiare i file necessari.

Ma è meglio impostare un compito di gulp per questo, ma questo è fuori dallo scopo di questa domanda.

+0

Così si consigliano l'installazione di un compito sorso per tutti i file .js nei node_modules che devono essere copiati a/wwwroot/libs/e quindi fare riferimento da/wwwroot /index.html? – Elisabeth

+0

@Elisabeth: Sì, è il flusso di lavoro previsto. Copia semplicemente i file effettivamente necessari. – Tseng

+0

@Tseng Provato, ma se vengono copiati molti file, Visual Studio si blocca per un momento. C'è un compito pianificato per risolverlo? Mi disturba davvero perché sembra che non sia il modo corretto di copiarlo. –

12

ci sono almeno due scelte sane di mente:

  • servono altre cartelle utilizzando app.UseStaticFiles. La soluzione originale è da Ode to Code. Lo uso per lo sviluppo , perché Visual Studio non sembra rispettare il locale .npmrc file impostato con prefix = wwwroot/node_modules. Idealmente, node_modules dovrebbe essere fornito in bundle per la produzione. È disponibile il numero npm rollup plugin che può raggruppare automaticamente gli script utilizzando la funzione import (ES2015).

  • Servire node_modules da CDN (ad esempio unpkg.com). Questo è abbastanza semplice, l'unico lato negativo è il tempo di risposta di CDN, soprattutto se hai disabilitato la cache del browser per gli scopi di sviluppo .

Ecco il codice per servire le cartelle in ASP.NET Core. Hai solo bisogno di cambiare la classe Startup: