Name Last Update
app Loading commit data...
assets Loading commit data...
config Loading commit data...
logs Loading commit data...
tests Loading commit data...
.editorconfig Loading commit data...
.gitignore Loading commit data...
.nvmrc Loading commit data...
README.md Loading commit data...
app.js Loading commit data...
gulpfile.js Loading commit data...
package.json Loading commit data...

README.md

Scaffolder NodeJS, Express, Sequelize (rimpiazzabile con un ORM NoSQL in pochi minuti), MySQL, basato sul generatore "express" (https://github.com/petecoop/generator-express). Se si usa nvm, nel repo c'è il file nascosto ".nvmrc" che attiva la corretta versione di NodeJS (se installata). Allo stato attuale la versione è la 6.2.2, quindi si suggerisce di utilizzare sintassi ES2015/ES6. Il codice è strutturato in MVC, all'interno della cartella app. Le rotte sono in una cartella routes in app. Eventuali file di frontend vanno messi in assets. Installa tutte le dipendenze con npm e modifica il gulpfile a piacimento. Uno scheletro è già incluso. Ricordati di modificare il file config/local.js con le tue configurazioni locali e mettilo in gitignore, così da non avere conflitti con le configurazioni di chi lavora con te. Va installato globalmente gulp

npm install -g gulp
npm install

Il gulp task "scripts" è il più delicato. Serve a comporre i js frontend con le loro dipendenze. Browserify si aspetta tutte le dipendenze come moduli. Anche se molte dipendenze sono moduli, vedi jQuery, e possono essere importati con:

import jQuery from 'jquery';

altre dipendenze, vedi Bootstrap, non espongono moduli. In quel caso le alternative sono:

  • togliere browserify dal gulpfile
  • workaround

Il workaround per includere bootstrap (ed è identico per ogni altro non modulo) in un file js frontend dove serve è:

window.$ = window.jQuery = jQuery;
var Bootstrap = require('bootstrap-sass');
Bootstrap.$ = window.$;
require('bootstrap-sass/assets/javascripts/bootstrap');

Questo perché bootstrap dipende da jQuery, ma non essendo un modulo browserify non riesce a mostrare a bootstrap che jQuery è correttamente incluso e bootstrap segnala la mancanza di jQuery.

Si suggerisce di utilizzare pm2 per controllare i processi sui server in fase di deploy. Nel package.json ci sono anche i task per il deploy. E' sufficiente installare pm2 sul server:

npm install -g pm2

Se si è dietro NGINX, va creato un proxy che deve passare le richieste su una specifica porta, che è quella che viene definita nei file config/pm2/staging.json e config/pm2/production.json, come mostrato qua: http://pm2.keymetrics.io/docs/tutorials/pm2-nginx-production-setup

Nei task "start*" viene incluso il supporto alle migrazioni sequelize (http://docs.sequelizejs.com/en/latest/docs/migrations/) Ricordati di creare la cartella migrations/ sul server. Per lanciare le migrazioni in locale:

npm install -g sequelize-cli
sequelize db:migrate --config=config/migrations.json

Non viene incluso nessun framework frontend, che può tuttavia essere incluso a piacimento.

E' stato aggiunto uno scheletro per i test. Si richiede l'installazione di Mocha come test runner (ma può essere usato anche altro, tipo Jasmine):

npm install -g mocha

I file dei test, strutturati a piacimento, vanno messi nella cartella tests/. Nel file di esempio viene importato Chai come libreria di assertion, ma è rimpiazzabile con quella che si preferisce. Per lanciare i test manualmente:

mocha tests --recursive --watch

I test automatici a runtime verranno aggiunti a breve (forse, potrebbe aver senso tenerli a livello di CI).