Как разместить 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 для вашей местной машины. Спасибо