Как разместить Google libphonenumber локально?

во время разработки на моем localhost я пытаюсь самостоятельно разместить 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>

это работает, но у меня все еще есть зависимость от внешнего размещенного компонента: библиотеки закрытия. Я пробовал использовать закрытие-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?

4 ответов


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

на http://closure-compiler.appspot.com/home

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

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

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

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

затем нажмите Compile.

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

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

надеюсь, что это помогает.

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


поскольку 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) Нажмите Compile

4) готово: текущий скомпилированный libphonenumber.файл js должен появиться на панели RHS


могу я предложить вам проверить этот ванильный javascript-порт библиотеки:https://github.com/halt-hammerzeit/libphonenumber-js/

Он легкий и может быть в комплекте с Webpack и прочее


Я не уверен, но вы можете использовать этот [1]: [расположение libphonenumber JS svn] http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/demo-compiled.js для вашей местной машины. Спасибо