Meteor 0.9.0: Migrazione al nuovo Packaging System

Con il rilascio della versione 0.9.0 Meteor porta con se il nuovo e proprio Packaging System: mandando in pensione l'ormai vecchio meteorite mrt add <packag-name>, mrt remove <package-name>.

Prima della versione 0.9.0, per l'installazione di un Package bisognava digitare mrt add <package-name>, esempio mrt add iron-router, ora sarà possibile aggiungere nuovi Packages semplicemente digitando meteor add <package-name> e meteor remove <package-name>.

Prima della versione 0.9.0 tramite meteor add|remove <package-name> era possibile aggiungere, rimuovere solo i Core Packages, ora non vi è più distinzione tra i community packages, per cui era necessario meteorite e i core packages.

Il nuovo Packaging System, integrandosi perfettamente con il tool da linea di comando meteor add <package-name> permette anche la selezione della versione del Package che si vuole installare.

Ad esempio, per installare qualsiasi versione superiore alla 1.0.0 di foo basterà digitare meteor add foo@1.0.0, mentre per installare una versione specifica meteor add foo@=1.0.0.

Come migrare un'app alla versione 0.9.0?

Avviando l'applicazione tramite meteor verrà visualizzato il seguente messaggio => Meteor 0.9.0 is available. Update this project with 'meteor update'.

Interrompiamo l'esecuzione dell'applicazione tramite Ctrl+c e avviamo l'aggiornameto digitando meteor update, ci vorrà un po' di tempo, ma al termine, oltre all'installazione della nuova versione di Meteor, l'app avrà tutti i Packages aggiornati con il nuovo Packaging System.

Per rimuovere la dipendenza dell'app da meteorite e migrarla definitivamente al nuovo sistema, bisognerà seguire i seguenti passaggi

  1. Aggiornare meteorite all'ultima versione tramite npm install -g meteorite
  2. All'interno della cartella dell'app eseguire mrt migrate-app

Ora abbiamo rimosso definitivamente la dipendenza della nostra app da meteorite mrt e si potrà usare sempre meteor.

Digitiamo nuovamente meteor all'interno della cartella dell'app per avviare l'esecuzione della stessa: come in precedenza, a video sarà possibile tornare a visualizzare

~/meteor/my-app$ meteor

=> Started proxy.
=> Started MongoDB.     
=> Started your app.   

=> App running at: http://localhost:3000/

Come ricercare i Packages da linea di comando?

Tramite il parametro search, ma vediamo in dettaglio come utilizzare la ricerca dei Packages.

Digitando il comando meteor search meteor ci avvisa che non ci sono argomenti e ci fornisce la sintassi corretta da utilizzare

~/meteor/my-app$ meteor search
search: not enough arguments.  
Usage: meteor search <regex> [--maintainer <username>] [--show-old]  

Meteor si aspetta come secondo parametro una <regexp> una stringa di testo esatta o una espressione regolare con il nome del Package o Packages da ricercare, esempio

~/meteor/my-app$ meteor search iron*

cmather:iron-core               Iron namespace and utilities.  
particle4dev:iron-subscription  subscription-manager for iron router  
mrt:environment-hooks           A hack to detect if code is running in a deve...  
mrt:iron-router-ga              Google analytics (universal edition) with som...  
cmather:iron-router             Routing specifically designed for Meteor  
...

Per effettuare una ricerca ancora più precisa possiamo fornire il nome dell'autore che ha scritto il Package, esempio

~/meteor/my-app$ meteor search iron* --maintainer cmather

Refreshing package metadata. This may take a moment.  
Found the following packages:  
cmather:iron-core              Iron namespace and utilities.  
cmather:iron-router            Routing specifically designed for Meteor  
cmather:iron-dynamic-template  Dynamic templates and data contexts.  
cmather:iron-layout            Dynamic layouts which enable rendering dynamic...  

E' possibile ricercare i Packages anche se si è offline, Meteor gestisce una cache locale dei Packages disponibili: quelli del core sono disponibili per l'installazione anche offline mentre per gli altri è necessario essere online.

Perché il nome dell'autore?

Questa è un'altra novità introdotta con la versione 0.9.0 e il nuovo Packaging System: il namespacing del Package con il nome dell'autore.

Il core team di Meteor ha fornito due ragioni del perché hanno attuato questa scelta

  1. Fornire al Package un nome quanto più descrittivo e chiaro possibile: ci sono molti Packages che fanno più o meno le stesse cose, alcuni meglio di altri, fare a gara per assegnare un nome non è proprio il massimo.
  2. Un ringraziamento verso l'autore di quel Package: ci sono molti sviluppatori che hanno contribuito ai quasi 1800 Packages attualmente disponibili, quindi, se state usando un Package di cui siete soddisfatti, ora sapete chi ringraziare. :-)

Tutti i Packages sono stati migrati dai servers di Meteorite al nuovo Meteor Package Server.

Il core team di Meteor ha fatto sapere che il rilascio della versione 1.0 è vicina, ed i rilasci di nuove versioni saranno sempre più frequenti.

Live CSS Injection

Durante lo sviluppo se viene modificato un file CSS e nessun altro degli altri (.html, .js, etc), in tutte le browser tabs aperte il CSS verrà aggiornato senza effettuare un refresh della pagina.