Estou atualizando o ecossistema JS moderno do lado do cliente e lendo o CommonJS e a AMD (incluindo ferramentas associadas - browserify, requirejs, onejs, jam, dezenas de outras). Se estou escrevendo uma biblioteca Javascript, como modularizá-la / compactá-la para que ela possa ser acessada de maneira mais ampla (idealmente por usuários que juram pelo CommonJS, AMD e especialmente nenhum)?
Bibliotecas populares como o jQuery parecem usar apenas a concatenação de arquivos da velha escola para criar a si própria e detectar dinamicamente se devem gravar em um exports
contexto global ou. Atualmente, estou fazendo a mesma coisa, mas a principal desvantagem é que, se eu (diferentemente do jQuery) depender de algumas bibliotecas, é bom não precisar solicitar aos usuários que pré-incluam manualmente o conjunto transitivo. (Embora atualmente eu só tenha duas dependências.) E, claro, a poluição global do espaço para nome.
Ou talvez seja mais limpo gerar várias versões da minha biblioteca, para cada contexto?
Também estou pensando em embalagem e publicação. Existem vários sistemas, mas acredito que o principal é o caramanchão, o que é fácil de lidar, já que tudo o que faz é buscar. No entanto, estou me perguntando se eu também deveria ter como alvo outros sistemas de pacotes como o componente (que requer o CommonJS).
Existem outros aspectos relevantes dos quais devo estar ciente? Existem bons exemplos de projetos a seguir para tudo isso?