javascript - template - Per cosa sono npm, bower, gulp, Yeoman e grunt?




yeoman php (3)

Sono uno sviluppatore di backend e leggermente confuso da npm, bower, gulp, grunt e Yeoman. Ogni volta che chiedo a qualcuno qual è il loro scopo, la risposta tende a ridursi al responsabile delle dipendenze - per tutti loro. Sicuramente, non abbiamo bisogno di quattro strumenti diversi che facciano tutti la stessa cosa?

Qualcuno può spiegare per quale motivo ognuno di questi motivi è buono nel minor numero possibile di frasi - se possibile, solo uno per strumento, usando una lingua di cinque anni (con capacità di sviluppo) potrebbe capire?

Per esempio:

  • SVN memorizza, gestisce e tiene traccia delle modifiche al nostro codice sorgente

Ho usato Maven, Jenkins, nesso e formica in passato; forse potresti confrontare gli strumenti sopra con questi?

Inoltre sentiti libero di aggiungere altri strumenti front-end alla lista.

Ecco cosa ho scoperto finora - non sono sicuro che sia corretto, però:

  • bower dependency manager per le librerie di sviluppo front-end / JS, utilizza un elenco di dipendenze piatto
  • Il gestore delle dipendenze di npm per il server node.js, può risolvere le dipendenze transitive / alberi di dipendenza
  • grunt esegue compiti, proprio come Jenkins, ma locality sulla riga di comando
  • Yeoman ha fornito un'impalcatura, vale a dire progetti di scheletri
  • gulp stesso come grugnito, ma scritto solo in js
  • server node.js per le app js?
  • git decentralizzato SCM / VCS, controparte di svn / cvs

Sono vicino? :)


  1. Gulp vs Grunt: Gulp offre una maggiore flessibilità con l'automazione delle attività, Grunt è dotato di molte funzionalità come da prassi di sviluppo comuni. Esistono due differenze principali tra Grunt e Gulp:

    • Grunt si concentra sulla configurazione, mentre Gulp si concentra sul codice
    • Grunt è stato costruito attorno a una serie di attività incorporate e comunemente utilizzate, mentre Gulp è venuto in giro con l'idea di non applicare nulla, ma come le micro-attività sviluppate dalla comunità dovrebbero connettersi tra loro Leggi qui
  1. NodeJS: è un linguaggio di scripting lato server non bloccante. Il che significa che le operazioni non bloccheranno ulteriori esecuzioni fino al termine dell'operazione corrente.
  1. Git: Come hai detto, è uno strumento SCM, ampiamente utilizzato. Secondo i documenti di GitHub, è diverso dagli altri strumenti SCM poiché i dati non vengono mai cancellati.

    Git pensa ai suoi dati più come una serie di istantanee di un mini filesystem. Ogni volta che commetti, o salvi lo stato del tuo progetto in Git, in pratica ti fa una foto di come appaiono tutti i tuoi file in quel momento e memorizza un riferimento a quell'istantanea.

    Quando esegui azioni in Git, quasi tutti aggiungono solo dati al database Git. È molto difficile ottenere che il sistema esegua tutto ciò che non è annullabile o che cancelli i dati in qualsiasi modo. Come in qualsiasi VCS, puoi perdere o rovinare le modifiche che non hai ancora effettuato; ma dopo aver eseguito un'istantanea su Git, è molto difficile perdere, specialmente se si esegue regolarmente il push del database in un altro repository.

    Leggi di più

  1. Bower vs NPM: Bower e NPM sono gestori delle dipendenze, ma i moduli Bower sono destinati allo sviluppo front-end. NPM è un'enorme raccolta di moduli da utilizzare con il backend NodeJS. Questa risposta SO lo copre meglio

Ho aggiunto alcuni dettagli:

npm è un gestore di pacchetti per javascript, npm è l'ecosistema di pacchetti di nodejs, ma può essere utilizzato solo per progetti front-end.

grunt & gulp sono utili per separare e automatizzare compiti come minification, compilation, unit test su riga di comando, è una soluzione molto più leggera rispetto ad (ad esempio) visual studio in quanto il processo è solo una linea di comando / processo separata (e solitamente leggera).

Per quanto riguarda le differenze tra gulp , grunt e bower c'è già un ticket: quali sono le differenze tra Grunt, Gulp.js e Bower? Perché e quando usarli?

Nodejs è più un runtime javascript. Node.js consente la creazione di server Web e strumenti di rete utilizzando js e una raccolta di "moduli" che gestiscono varie funzionalità di base e altre funzioni di base. Source

Questo ticket riprende le differenze tra Git e Subversion: Perché Git è meglio di Subversion?


Sei vicino! Benvenuto in JavaScript :)

Permettetemi di darvi una breve descrizione e una funzione con cui la maggior parte degli sviluppatori passa del tempo.

bower Si concentra sui pacchetti utilizzati nel browser. Ogni bower install <packagename> punta esattamente a un file da includere (altri possono essere scaricati). A causa del successo del webpack, browserify e babel sono per lo più obsoleti come manager delle dipendenze di prima classe.

npm Storicamente si concentra sul codice NodeJS ma ha abbattuto il bower per i moduli del browser. Non farti ingannare da nessuno: NPM è enorme. NPM carica anche molti file nel tuo progetto e una nuova installazione di npm è sempre una buona ragione per preparare una nuova tazza di caffè. NPM è facile da usare ma può rompere la tua app quando si cambiano gli ambienti a causa del modo sciolto di fare riferimento alle versioni e l'arbitrarietà della pubblicazione dei moduli. Ricerca Shrink Wrap e npm install --save-exact

grunt Facilita l'automazione delle attività. Sorseggia un fratello più vecchio e un po 'più pigro. La community di JavaScript era solita frequentarlo nel 2014. Grunt è già considerato legacy in alcuni posti, ma c'è ancora una grande quantità di automazione davvero potente da trovare. La configurazione può essere un incubo per casi di utilizzo più ampi. C'è un modulo grunt per quello però.

gulp Fa la stessa cosa del grugnito ma è più veloce.

run-script npm Potresti non aver bisogno di task runner. Gli script NodeJS sono veramente facili da scrivere, quindi la maggior parte dei casi d'uso consente di personalizzare il flusso di lavoro dell'automazione. Esegui script dal contesto del tuo file package.json usando npm run-script

webpack Non perdere il webpack. Soprattutto se ti senti perso nei molti modi di scrivere JavaScript in un codice modulare coerente. Pacchetti web .js file in moduli e lo fa in modo splendido. Webpack è altamente estensibile e offre anche un buon ambiente di sviluppo: webpack-dev-server Utilizzalo insieme a babel per la migliore esperienza JavaScript possibile fino ad oggi.

Yeoman Scaffolding. Estremamente prezioso per team con background diversi in quanto fornisce un terreno comune controllabile per l'architettura dei tuoi progetti. C'è anche un'impalcatura per impalcature .





tooling