Вопрос по libphonenumber, google-closure, google-closure-library – Как разместить Google libphonenumber локально?

9

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

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

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

Ваш Ответ

3   ответа
24

процесс изменился, хотя бы немного:

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

большое спасибо krystan honour
0

иотеки:https://github.com/halt-hammerzeit/libphonenumber-js/

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

24

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

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

Надеюсь это поможет.

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

@gonvaled Очень приятно, я видел это, но не особо задумывался над этим, так как онлайн-версия мне подходит. Я думаю, что инструмент командной строки может быть полезным в будущем, хотя. Tom Heard
спасибо, это здорово! Версия этого инструмента для командной строки была бы отличной, так что я могу интегрировать ее в свои сценарии развертывания. Я работаю над Linux. Вы знаете об альтернативе командной строки? dangonfast
На самом деле у них есть API, к которому можно получить удаленный доступ, и примеры на Python о том, как его использовать. dangonfast
@gonvaled Посмотрите наdevelopers.googl, e.com / закрытие / составитель Это домашняя страница для замыкателя-компилятора. У них есть Java-версия инструмента, но вы должны изучить, как его использовать, а я нет. Tom Heard

Похожие вопросы