Le dipendenze di Node.js pesano troppo


9

Di recente ho iniziato a giocare con node.js.

Ora, ogni esercitazione sui nodi là fuori afferma che dovresti iniziare

npm init

e poi, supponiamo che tu voglia un po 'di framework server standard, diciamo che scegli express:

npm install express

ma poi vorrai molte altre cose a cui sei abituato da mondi come ASP.NET.

Parlo di template engine (giada) e di pre-processori di fogli di stile (SASS).

E poi ti dicono "installa gulp / grunt! In modo da poter minimizzare e ugualizzare ed eseguire il server e tante altre cose automaticamente!"

E questo significa installare gulp, node-sass e gulp-sass e gulp-uglify e forse alcune cose più interessanti (tsd o babel, markdown ecc) ...

Ma tutti questi sono pesanti sul tuo disco e progetto. Non cercare un momento e puoi facilmente ritrovarti con 100 MB + dimensioni del disco per quel progetto (che non è ancora ancora iniziato!) Per non parlare di oltre 10000 file poiché ogni modulo di nodo porta le sue dipendenze, non importa che lo stesso la dipendenza viene utilizzata da un altro modulo. E questa è una cosa molto difficile da spostare ovunque, per non parlare di un web server.

Mi sto perdendo qualcosa? Non credo sia possibile che vengano elogiati così tanti ambienti del nodo mentre esiste un difetto così evidente. Mi aspetto troppo (dopo tutto quello che ho provato a usare molti strumenti contemporaneamente), c'è qualcosa di banale noto ai veterani del Nodo per aggirare questo?


2
sono assolutamente d'accordo, sono stato sorpreso di vedere l'albero npm per alcuni progetti front-end. Immagino che nel mondo .net tu abbia la stessa cosa, ma sono tutti compilati in binari, quindi non te ne accorgi
Ewan

2
Sfortunatamente questa non è una domanda specifica e rispondente, quindi probabilmente verrà chiusa presto. Quello che posso dirti è che 1) mentre tutti quegli strumenti aggiuntivi sono utili per qualcosa, i piccoli progetti semplicemente non ne hanno bisogno per la maggior parte 2) tutti gli altri framework di programmazione con funzionalità simili arriveranno con una quantità simile di cose (basta guardare ai download di JRE o .NET), l'unica differenza è quanto di ciò che ti serve fa parte della distribuzione "predefinita" e quanto devi trovare in altri pacchetti 3) 100 MB sul tuo computer di sviluppo non sono nulla
Ixrec

1
@Ixrec ovviamente è responsabile, hai appena fatto (o provato) :). Ma poi, potrei sostenere le tue affermazioni: 1) questo non deve essere un piccolo progetto - considera un progetto con diverse viste con i propri file js e fogli di stile. è abbastanza per farti desiderare sass, cssnano e uglify. anche abbastanza per farti desiderare espresso, giada e un po 'di più. 2) Ho avuto un progetto .net decente che non è diventato così pesante (e da nessuna parte tanti file). 3) forse la moderna macchina di sviluppo lo prende facilmente, ma questo pesa anche sul server, e questo è un po 'più preoccupante. Ho sbagliato?
O Yaniv il

2
@OrYaniv In effetti, stai dimostrando il mio punto di vista: questo è il tipo di problema che può essere discusso , ma senza risposta perché è troppo ampio e dipende troppo pesantemente da esattamente quali progetti stai facendo e quali dipendenze sembra bisogno. A proposito, le discussioni vanno benissimo in chat . O su Quora.
Ixrec,

3
Benvenuti nel mondo meravigliosamente gonfio "tutto o niente" di node.js, che in realtà non è più facile e non migliore di quello che hai usato prima.
Traubenfuchs,

Risposte:


3

Il recente problema del pad sinistro è un ottimo esempio del problema con questa tendenza in Node. Quando dipendi da troppe cose, tutte sono inclini a diventare ka-pow, a rendere il tuo progetto più difficile da eseguire il debug e, per un nuovo arrivato, a capire meglio il funzionamento della lingua.

Ora i bravi programmatori Node.js sanno scrivere applicazioni minimaliste, per quanto riguarda le dipendenze. Meno cose da cui dipendi, meglio è. Hai bisogno di pad stringhe a sinistra? Codificalo in un aiuto, sono 11 righe di codice con gli spazi. Devi numerare le tue righe di stringa? Codificalo, è meno di 100 righe di codice.

Anche per compiti più complicati, come la gestione dei progetti, suggerirei di attenersi ai Makefile mentre il tuo progetto è abbastanza semplice: grugnito e sorso sono davvero molto utili per progetti giganti che hanno molto da fare. Ma per il tuo blog SPA? Scrivi un Makefile, ci vogliono 5 minuti e sai come funziona.

La tentazione di sfogliare npm ogni volta che devi scrivere 3 righe di codice è grande, ma dovresti resistere, ogni volta che è ragionevole. Non includere jQuery se hai 3 manipolazioni DOM, non usare angolare per quella pagina promozionale statica, non usare express per un server semplicistico. Ma stai codificando un CMS? Dovresti essere pazzo a non usare pacchetti come jQuery, trattino basso e cosa no. Lavorare con 10 tipi di raccolta, 3 dbs e interrogarli continuamente? Saresti pazzo a non usare il trattino basso e pochi altri. Basti pensare "risparmio abbastanza tempo installando questo pacchetto?" o "Non posso semplicemente scrivere questo codice per mezz'ora o giù di lì?"


1
In un'altra nota, ci vogliono davvero 100 righe di codice Javascript per aggiungere numeri di riga a una stringa?
Robert Harvey,

Hahahah, non avevo davvero pensato a un'implementazione realistica della numerazione delle righe, perché ... Non vedo davvero la necessità che esista una cosa del genere, figuriamoci come pacchetto.
BorisStoyanovv,

Probabilmente potresti tagliare a metà quella cosa semplicemente lasciandola supponente. È davvero un problema semplice da risolvere. (Ed è una fodera in una lingua come schema, e probabilmente pitone ora che ci penso)
Shayne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.