L'utilizzo principale di Node.JS è ovviamente uno stack completo del server, e l'ho usato in questo modo con grande successo.
Tuttavia, un certo numero di pacchetti NPM utili e interessanti si occupano di cose come il traspiling di un linguaggio stilistico, l'aggiunta di informazioni di digitazione a JavaScript senza tipografia, l'esecuzione di test di unità JavaScript, persino un sistema di compilazione "piped" come Gulp.
Attualmente, lavoro su un progetto che utilizza Tomcat e viene scritto principalmente in Java. Le utilità Java e Ant si sono sentite un po 'limitanti in termini di interazione con i nostri file JavaScript durante la creazione / test, quindi sto esaminando la possibilità di aggiungere una dipendenza su NodeJS e impostare le dipendenze di compilazione.
Perché dovrei farlo?
Voglio distintamente evitare di aggiungere dipendenze "perché sono interessanti". Voglio solo aggiungere pacchetti Node per scenari in cui non è fattibile, o addirittura deprecato, per risolvere particolari problemi usando programmi basati su Java (es. Ant).
Un esempio: la nostra libreria di widget JavaScript, Dojo, ha dichiarato che non supporteranno l'esecuzione di build Dojo tramite Java per molto più tempo, essendosi ampiamente spostati su build Node. Inoltre, alcuni toolkit di compressione CSS eseguiti con Java hanno smesso di essere gestiti a favore di quelli come LESS. Esistono anche strumenti di sviluppo come i test delle unità JavaScript o i tipi TypeScript che vorremmo considerare per rendere lo sviluppo più affidabile. L'utilizzo di un gestore delle dipendenze potrebbe anche aiutarci a progettare una soluzione in cui non abbiamo l'intero codice sorgente di Dojo impegnato nel nostro repository.
La domanda: layout del progetto corretto e potenziali insidie
Quali sarebbero le pratiche affidabili da seguire se voglio utilizzare il nodo come dipendenza build / test / sviluppo, ma non lo richiedono per l'app finale, pacchettizzata (e pro / contro di approcci diversi)? In questo scenario, ha davvero senso includere un package.json nella gerarchia del progetto root? Le attività di compilazione relative ai nodi devono essere invocate tramite Ant o ha senso richiedere azioni di comando separate per invocarle? In quali scenari gli sviluppatori / costruttori di macchine devono eseguire "npm install" e devono sempre essere automatizzati?
Se basati sull'esperienza le persone tendono a trovare che la risposta a queste domande non ha importanza, è anche una risposta utile - ma sto chiedendo di sperare che l'esperienza eviti alcune insidie del design.