Ho visto il discorso di Paul Irish che annunciava Yeoman (www.yeoman.io), e sono appassionato del concetto di gestione di un ambiente di sviluppo continuo. Non contento di aspettare un invito a Yeoman, ho provato Grunt e Brunch. Entrambi si installano facilmente e posso ottenere i nuovi progetti in esecuzione con il minimo sforzo.Importare un progetto JavaScript esistente in un progetto Grunt/Brunch
Non capisco come si possa migrare un progetto esistente in entrambe le piattaforme. Il mio progetto utilizza un singolo spazio dei nomi e utilizza due convenzioni per i moduli (uno per istanziare un altro per l'utilità), ognuno dei quali è avvolto in funzioni anonime autoeseguite che esportano nell'istanza o nello spazio dei nomi.
Ho almeno 200 moduli e molte più semplici funzioni di helper esporta nello spazio dei nomi; quindi non è del tutto efficiente utilizzare la console per crearli in un progetto grunt/brunch e quindi importare manualmente ciascun modulo singolarmente. Inoltre, sto utilizzando almeno 15 diversi strumenti JavaScript di terze parti. Non è chiaro a me come portarli.
Qual è il modo più efficiente di prendere un grande progetto esistente e migrarlo in Grunt/Brunch con il minor numero di refactoring e supporto per strumenti di terze parti arbitrari?
Aggiornamento: tra i due, ho trovato il brunch un po 'più facile da gestire. Se usi lo "scheletro" di azioni (che è "template" - dalla riga di comando {nella cartella in cui vuoi che si verifichi la modifica} esegui "brunch new [nome_progetto] --keleton git: //github.com/brunch /simple-js-skeleton.git ") per puro JS, si ottiene una nuova struttura di cartelle che è in realtà abbastanza reattiva. Tutto ciò che inserisci nelle cartelle "app" (il tuo codice personale) o "venditore" (di terze parti) verrà automaticamente ricompilato per te su modifica file (quando esegui "brunch watch").
Questo è fantastico, tranne. Secondo la documentazione, controlli gli script del fornitore dell'ordine che sono compilati e concatenati insieme dal file config.coffee di Brunch (file di testo JSON). Le modifiche a questo file sembrano non avere alcun effetto, quindi ti ritroverai con condizioni di gara di terze parti dai plug-in in attesa di altri plug-in.
Inoltre, quando si rilascia il proprio codice nella cartella "app" creata automaticamente, si ottiene una versione auto-compilata, in tempo reale e come si modifica il codice; ma non è accessibile. Il brunch offusca l'oggetto window, quindi la mia iniziale dichiarazione del namespace su window.myNameSpace fallisce e anche tutte le successive chiamate di libreria allo spazio dei nomi falliscono. Questo ha qualcosa a che fare con il sistema dei moduli di Brunch, per il quale non riesco a trovare alcuna documentazione.
Ho risolto questo ponendo la classe del mio spazio dei nomi nella cartella "fornitore", assicurandomi che fosse collegata all'oggetto della finestra; tuttavia, ora c'è una condizione di competizione: il mio spazio dei nomi non è sempre disponibile per tutti i miei moduli.
Il problema è ora questo:
Dopo aver copiato tutte le librerie interne ed esterne in un progetto Brunch, come si fa a configurare l'applicazione per caricarli in un ordine sano di mente?
Quello che non ho capito del brunch è che (almeno sembra) richiede il modello del modulo CommonJS. Sto usando un semplice (ma a mio avviso, un pattern Namespace abbastanza elegante) [Vedi http://stackoverflow.com/questions/9072834/auto-generate-visual-studio-vsdoc-for-javascript-library e http://jsfiddle.net/2gxYJ/1/], che in effetti rende la conversione in altri sistemi di moduli (RequireJS, CommonJS, AMD, ecc.) non banale una volta che la libreria è diventata grande. Così, sono passato a Grunt che non impone il vincolo progettuale. – Christopher
Poiché il brunch 1.4 è agnostico ai sistemi di moduli, è possibile anche disabilitare i moduli. –
Questo è eccezionale. L'unica caratteristica mancante è il supporto JSHint. Linting come opzione di costruzione/orologio sarebbe fantastico. La configurazione di Grunt fornisce anche un oggetto jshint/uglifyjs per configurare esplicitamente il loro comportamento. Ad ogni modo, il mio problema principale con il brunch è stato il requisito del modulo, quindi sicuramente darò un'altra possibilità. – Christopher