2013-09-07 12 views
7

Durante lo sviluppo sul mio localhost, sto cercando di ospitare la libreria libphonenumber. Sto cercando con il seguente:Come ospitare localmente il libphonenumber di google?

<script src="//closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script> 
<script>goog.require('goog.proto2.Message');</script> 
<script src="scripts/vendor/pn/phonemetadata.pb.js"></script> 
<script src="scripts/vendor/pn/phonenumber.pb.js"></script> 
<script src="scripts/vendor/pn/metadata.js"></script> 
<script src="scripts/vendor/pn/phonenumberutil.js"></script> 
<script src="scripts/vendor/pn/asyoutypeformatter.js"></script> 

Questo è il lavoro, ma ho ancora una dipendenza a un componente ospitato esternamente: la biblioteca di chiusura. Ho provato ad usare closure-lite, che è (apparentemente, sono nuovo qui) una versione abbastanza completa della libreria di chiusura, disponibile per l'auto-hosting. Ho provato a fare quanto segue:

<script src="scripts/vendor/closure-lite.js"></script> 
<script>goog.require('goog.proto2.Message');</script> 
<script src="scripts/vendor/pn/phonemetadata.pb.js"></script> 
<script src="scripts/vendor/pn/phonenumber.pb.js"></script> 
<script src="scripts/vendor/pn/metadata.js"></script> 
<script src="scripts/vendor/pn/phonenumberutil.js"></script> 
<script src="scripts/vendor/pn/asyoutypeformatter.js"></script> 

Ma il goog.proto2.Message non è disponibile. Sto ottenendo i seguenti errori:

Uncaught TypeError: Cannot read property 'Message' of undefined 

L'errore deriva dallo script phonemetadata.pb.js:

goog.inherits(i18n.phonenumbers.NumberFormat, goog.proto2.Message); 

Cosa posso fare per completamente auto-host libphonenumber?

risposta

22

È possibile averlo già risolto, ma ho trovato un modo molto semplice per compilare tutto il codice libphonenumber in un file che include la libreria di chiusura.

Vai http://closure-compiler.appspot.com/home

Questa è la versione online di Google del compilatore di chiusura.

Poi qualcosa d'ingresso simile:

// ==ClosureCompiler== 
// @compilation_level SIMPLE_OPTIMIZATIONS 
// @output_file_name libphonenumber.js 
// @use_closure_library true 
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonemetadata.pb.js 
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonenumber.pb.js 
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/metadata.js 
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonenumberutil.js 
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/asyoutypeformatter.js 
// @formatting pretty_print 
// ==/ClosureCompiler== 

È possibile aggiungere o eliminare tutti i file aggiuntivi che si desidera.

Quindi fare clic su Compila.

Ciò recupererà ciascuno dei file più recenti dal repository e lo creerà in un singolo file javascript.

Ora non c'è bisogno di preoccuparsi di gestire tutto il codice della libreria di chiusura, come ciò che è necessario è già stato compilato.

Spero che questo aiuti.

Modifica: Trovo che questo sia davvero utile per gestire gli aggiornamenti anche alla libreria. Se si esegue nuovamente questo nel compilatore, si otterrà il nuovo file javascript con tutti gli ultimi aggiornamenti.

+0

grazie, questo è grande! Una versione da riga di comando di questo strumento sarebbe ottima, così che io possa integrarla negli script di distribuzione. Sto lavorando su Linux. Conosci un'alternativa da riga di comando? – dangonfast

+0

@gonvaled Dai un'occhiata a https://developers.google.com/closure/compiler/ Questa è la home page del compilatore di chiusura. Hanno una versione java dello strumento, ma dovresti esaminare come usarlo, come non l'ho fatto. –

+0

In realtà dispongono di un'API accessibile in remoto e di esempi di pitone su come utilizzarlo. – dangonfast

22

Dal momento che Google trasferisce loro codice per GitHub il processo è cambiato, anche se solo un po ':

1) vai a http://closure-compiler.appspot.com/home

2) inserire il seguente

// ==ClosureCompiler== 
// @compilation_level SIMPLE_OPTIMIZATIONS 
// @output_file_name libphonenumber.js 
// @use_closure_library true 
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/phonemetadata.pb.js 
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/phonenumber.pb.js 
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/metadata.js 
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/phonenumberutil.js 
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/asyoutypeformatter.js 
// @formatting pretty_print 
// ==/ClosureCompiler== 

3) Fare clic Compilare

4) Fine: l'attuale libphonenumber compilato.il file js dovrebbe comparire nel pannello RHS

+0

grazie mille –

Problemi correlati