7

Attualmente sto provando a migrare un vecchio progetto WebSite ASP.NET in Visual Studio 2015. Mi piacerebbe utilizzare NPM/Gulp per compilare automaticamente i file LESS su CSS (questa attività è stata eseguita da WebEssentials in VS 2013).Modifica la posizione della cartella node_modules

Ho aggiunto un file package.json al progetto per caricare i componenti richiesti. Questo crea una cartella node_modules nella radice del progetto WebSite, ed è qui che inizia il mio problema:

Poiché i progetti WebSite non hanno un file di progetto, tutti i file (e le sottodirectory) trovati nella cartella principale del progetto , sono automaticamente parte del progetto. A causa della struttura di directory profondamente annidata all'interno di node_modules, ciò comporta errori a causa di nomi di percorso troppo lunghi.

Una soluzione semplice è impostare l'attributo hidden nella cartella node_modules (ma questa operazione deve essere eseguita manualmente da ogni sviluppatore).

C'è un modo per dire a NPM di mettere i moduli del nodo in un'altra directory, ad es. un livello sopra il progetto (..\node_modules) dove si trova il file della soluzione?

Oppure è possibile impostare l'attributo nascosto su una cartella da un'attività gulp (che viene eseguita quando viene caricato il progetto)?

+0

È possibile affrontare il problema il contrario. Crea il tuo sito web root in una posizione diversa e usa gulp per compilare le fonti e scriverle nella cartella del tuo sito web (es. 'Public') quindi eseguire npm/gulp dalla directory della tua soluzione e lasciare che il punto di ingresso del tuo sito web punti al cartella 'public'. – Rik

+0

@Rik: Non sono sicuro che sia possibile con un progetto ASP.NET * WebSite *, ma ci penserò su. Inoltre, se possibile, preferirei non apportare troppe modifiche a quel vecchio progetto. – M4N

+0

Ma stai aggiungendo i file npm da qualche parte. seleziona qualsiasi posizione che non si trova nella cartella del tuo sito web e usa 'gulp.src(). pipe (dostuff) .gulp.dest (percorso/a/website/dir)' da lì. Con gulp.dest() è possibile copiare i file in qualsiasi posizione. Non ha bisogno di modifiche strutturali. – Rik

risposta

1

in base alla risposta @ di Rik, sono stato in grado di risolvere il problema:

Invece di aggiungere il package.json e gulpfile.js nel progetto WebSite, li ho aggiunto a livello di soluzione (come elementi di soluzione). Ciò significa che la cartella node_modules si trova ora nella directory della soluzione allo stesso livello dei progetti WebSite.

L'unica altra modifica era modificare i percorsi in gulpfile.js di conseguenza.

1

È possibile controllare npm 3.0+. Installa i moduli in una struttura massimamente piatta. Dovrebbe ridurre le lunghezze dei percorsi nella directory del modulo.

Dal le note di rilascio

piatto, piatto, piatto!

Le dipendenze ora verranno installate al massimo. Nella misura in cui è possibile , tutte le dipendenze e le loro dipendenze e LE RELATIVE dipendenze verranno installate nella cartella node_modules del progetto senza nidificazione. Vedrai solo moduli annidati uno sotto l'altro quando due (o più) moduli hanno dipendenze in conflitto.

  • # 3697 Questo, si spera, eliminare la maggior parte dei casi in cui gli utenti di Windows è conclusa con i percorsi che erano troppo a lungo per Explorer e altri
    strumenti standard da affrontare.
  • # 6912 (# 4761 # 4037) Ciò significa anche che le installazioni verranno dedotte dall'inizio.
  • # 5827 Questa deduplicazione si estende anche ai git deps.
  • # 6936 (# 5698) Diversi comandi sono ora deduple.

Questo ha alcune implicazioni per il comportamento degli altri comandi:

  • npm disinstallazione rimuove tutte le dipendenze del modulo che si è specificato che non sono richiesto da qualsiasi altro modulo. In precedenza, lo
    rimuoverà solo quelli che sono stati installati sotto di esso,
    risultanti in cruft sinistro se lo avessi mai dedotto.
  • npm ls ora mostra il tuo albero delle dipendenze organizzato attorno a ciò che richiede cosa, piuttosto che dove quei moduli sono su disco.
  • # 6937 dedupe npm ora appiattisce l'albero oltre alla deduplicazione.

https://github.com/npm/npm/releases/tag/v3.0.0

Per aggiornare l'installazione di Windows controlla questo pacchetto di NPM-windows-aggiornamento

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/10565078) –

+0

Aggiunto più dettagli alla risposta –