Questo articolo è un po' un invito a sperimentare e discutere. Attualmente sto cercando di vedere cosa si potrebbe fare per migliorare la struttura di nodes_modules installati su un progetto. Sono ancora inesperto in questo settore, quindi siate indulgenti se commetto un errore, e soprattutto non esitate a correggermi o a rimbalzare nella sezione commenti, sarò felice di discuterne/dibattere con tutti.
[tipo separatore=”” size=”” icon=”stella”]
Spiegazioni
[riga] [un_terzo]
[/uno_terzo] [due_terzo] Per cancellare i miei difetti su questo argomento, mi sono immerso nell'installazione di nodes_modules per uno dei miei progetti che doveva funzionare con gulp.
Se hai familiarità con tutto questo, probabilmente sei già consapevole di molto di ciò che accadrà.
Per altri, dovresti saperlo quando installi una dipendenza tramite npm su un progetto, recupererà automaticamente le dipendenze di cui ha bisogno (perché sì, anche le dipendenze a volte hanno dipendenze).
[/due_terzi] [/riga] Ed è a cosa molto buona, perché in questo modo lo sviluppatore non ha bisogno di avere una conoscenza enciclopedica di ogni plugin. In caso contrario, dovremmo conoscere, per così dire, a memoria tutte le dipendenze necessarie per ogni plugin, oppure dovremmo andare a cercare le informazioni online ogni volta che vogliamo installare una dipendenza. Per nulla praticabile su base giornaliera.
[tipo separatore=”” size=”” icon=”stella”]
Il problema
Sebbene l'installazione automatica delle dipendenze sia una funzionalità indispensabile, non sono sicuro che la struttura risultante sia ottimale.
Ad esempio, ecco come appare l'architettura del plugin bussola a sbuffo, con tutto il necessario per funzionare:
Sono MOLTE dipendenze! Riesci a immaginare se dovessi sapere tutto ciò a memoria e installarli uno per uno? Siamo d'accordo, non è possibile.
Tuttavia, guarda la struttura. Guarda cosa succede. Le dipendenze di bussola a sbuffo anche bisogno di dipendenze. E a volte sono necessari gli stessi. Ho usato i colori per renderlo più evidente.
Matryoshka
Sì, in effetti, si finisce con un'architettura di nesting doll, a volte quasi infinita, in cui ogni plugin di gulp contiene la sua cartella nodes_modules con le sue dipendenze, quindi altri plugin di gulp, che a loro volta contengono cartelle nodes_modules con dipendenze e così via... come visto sopra nel esempio di plugin bussola a sbuffo.
Francamente, penso che abbiamo un grosso problema qui.
Se continuo con l'esempio di bussola a sbuffo, e scelgo la dipendenza 'through2', vedrai che è alla radice del plugin gulp-compass, ma si trova anche nelle dipendenze di gulp-util, che è una delle dipendenze di gulp -compass. Mal di testa ? Anche io.
Non ha senso perché la dipendenza è già fornita nel plug-in gulp-compass, ma la dipendenza gulp-util la cercherà di nuovo perché ne ha bisogno per funzionare ... stiamo camminando sulla nostra testa lì.
Quindi sì, funziona così com'è, perché preoccuparsi... ma non è così.
[tipo separatore=”” size=”” icon=”stella”]
Microsoft è...
Su macchine Windows, ciò causa bug perché gli indirizzi dei file sono troppo lunghi. (Vedi la discussione su Github).
[riga] [due_terzi]
[/due_terzi] [un_terzo]Sicuramente raggiungere un file che si trova in una cartella, che è essa stessa in un'altra cartella, che è essa stessa ancora in un'altra cartella, che è essa stessa immobile! in un'altra cartella, che è essa stessa ancora!!!!! in un'altra cartella (sic…) può diventare noioso, anche per un computer.
Quindi mi dirai che Microsoft è tutto marcio e che devi usare il Mac.
Lo ammetto, preferisco anche il Mac, ma non credo che giustifichi un'architettura del genere... e sono del parere che dovrebbe funzionare per tutti, senza dover pulire tutto a portata di mano.

[/un_terzo] [/riga] [tipo separatore=”” size=”” icon=”stella”]
NPM di livello successivo
Può sembrare pretenzioso, dato che sono un principiante, ma penso che dobbiamo far evolvere le dipendenze verso un funzionamento più ottimale.
Non sarebbe più saggio cambiare il modo in cui funzionano questi plugin, in modo che controllino nella cartella nodes_modules di base se le dipendenze di cui hanno bisogno sono già presenti, aggiornarle se necessario, installarle se sono assenti ma comunque alla radice dalla cartella nodes_modules originale? Avremmo improvvisamente un "albero delle dipendenze piatto" come suggerito dal mio collega Logu.
Quindi la discussione è aperta. Non esitate a condividere la vostra esperienza o a dare la vostra opinione. Spero di poter riscrivere un articolo su questo argomento con soluzioni reali.
Emmanuelle GUYOT / UX-Scienziata