Я догонял современную экосистему JS на стороне клиента и читал на модульных системах, таких как CommonJS и AMD (включая связанные с ними инструменты - браузер, requirejs, onejs, jam, десятки других). Если я пишу библиотеку Javascript, как мне ее упаковать, чтобы он мог быть наиболее широко доступным (в идеале, пользователями, которые клянутся CommonJS, AMD и, в особенности, нигде)?Как упаковать клиентскую библиотеку Javascript сегодня?
Популярные библиотеки, такие как jQuery, похоже, просто используют конкатенацию файлов старой школы для создания самого себя и динамически обнаруживают, следует ли писать в экспорт или глобальный контекст. В настоящее время я делаю то же самое, но основной недостаток заключается в том, что если я (в отличие от jQuery) зависит от нескольких библиотек, неплохо не попросить пользователей вручную предварительно включить транзитивный набор. (Хотя в настоящее время у меня только две зависимости.) И, конечно же, глобальное загрязнение пространства имен.
Или, может быть, самое чистое создание нескольких версий моей библиотеки для каждого контекста?
Это также влияет на упаковку и публикацию. Есть несколько систем, но я считаю, что основной из них - беседка, с которой легко справиться, поскольку все, что она делает, - это выборка. Однако, если я хочу упаковать его для компонента, тогда для этого требуется модуль CommonJS.
Есть ли другие важные аспекты, о которых я должен знать? Есть ли хорошие примеры проектов для всего этого?