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