7

Во время разработки моего локального хоста я пытаюсь самостоятельно разместить библиотеку libphonenumber. Я пытаюсь со следующим:Как разместить локальный домен google libphonenumber?

<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> 

Это работает, но я до сих пор есть зависимость к внешне размещенному компоненту: библиотеки закрытия. Я пробовал использовать closure-lite, который (по-видимому, я здесь новый) довольно полная версия библиотеки закрытия, доступная для самостоятельного хостинга. Я пробовал сделать следующее:

<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> 

Но goog.proto2.Message не доступен. Я получаю следующие ошибки:

Uncaught TypeError: Cannot read property 'Message' of undefined 

ошибка происходит от phonemetadata.pb.js сценария:

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

Что я могу сделать, чтобы полностью автономны хост по libphonenumber?

ответ

22

Возможно, вы решили это уже, но я нашел очень простой способ скомпилировать весь код libphonenumber в один файл, который включает в себя материал библиотеки закрытия.

Перейти к http://closure-compiler.appspot.com/home

Это онлайн версия Google, закрывающего компилятором.

Затем введите что-то вроде:

// ==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== 

Вы можете добавлять или удалять любые дополнительные файлы, которые вы хотите.

Затем нажмите «Скомпилировать».

Это будет извлекать каждый из последних файлов из репозитория и встраивать его в один файл javascript.

Теперь вам не нужно беспокоиться об обработке всего кода библиотеки закрытия, как то, что вам нужно будет уже составлено в.

Надеется, что это помогает.

Редактировать: Я считаю, что это действительно полезно для обработки обновлений в библиотеке. Если вы просто перезапустите это в компиляторе, вы получите новый файл javascript со всеми последними обновлениями.

+0

спасибо, это здорово! Версия командной строки этого инструмента будет отличной, поэтому я могу интегрировать ее в сценарии развертывания. Я работаю над Linux. Вы знаете альтернативу командной строки? – dangonfast

+0

@gonvaled Посмотрите на https://developers.google.com/closure/compiler/ Это домашняя страница для компилятора-закрытия. У них есть Java-версия инструмента, но вам нужно будет изучить, как ее использовать, как и я. –

+0

У них фактически есть API, к которому можно получить доступ удаленно, и примеры python о том, как его использовать. – dangonfast

22

С Google перенесли свой код на GitHub процесс изменился, если только чуть-чуть:

1) перейти к http://closure-compiler.appspot.com/home

2) вставьте следующий

// ==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) Нажмите Компиляция

4) Выполнено: текущий скомпилированный libphonenumber.JS файл должен появиться в панели РИТ

+0

очень благодарен –