Não tenho certeza se isso é viável ou se pertence ao repositório Node.js.
Freqüentemente, há casos em que certas dependências requerem configurações específicas de compilação para funcionar corretamente em um ambiente geral (por exemplo).
Esta configuração pode ser uma configuração Babel, uma configuração Webpack ou algo personalizado apenas para aquele pacote.
Como está atualmente, não existe uma maneira padronizada de configurar pacotes.
Algumas pessoas usam uma convenção onde colocam um campo em package.json
com o nome do pacote, e um pacote pode ler isso. Mas não parece padrão o suficiente.
Quando um pacote precisa de configuração personalizada para tempo de execução ou tempo de construção.
Às vezes, o JavaScript precisa de etapas de construção para certos casos. Este recurso de configuração teria uma opção opcional de "dependências de construção" que pode ser passada para qualquer pacote (se eles constroem módulos nativos ou apenas transpilam JavaScript para uma forma inferior).
Dependendo da configuração, um pacote pode precisar de certas dependências que de outra forma não seriam necessárias (por exemplo, dependências de compilação).
Portanto, o sistema de pacotes seria inteligente o suficiente, pois se um usuário tiver certa configuração de pacote, ele pode determinar quais dependências adicionais instalar.
Talvez esse recurso precise apenas ser expandido do sistema de módulo nativo existente para o sistema JavaScript geral (de uma forma fácil de usar, os módulos nativos são complicados).
Isso também pode ser muito útil para coisas como dependências opcionais. Seria fácil, com config, especificar que uma biblioteca use (por exemplo) three
vez de babylonjs
. Isso faria com que a dependência apropriada fosse instalada. É semelhante às dependências de pares, mas mais fácil, e um determinado pacote que depende de dependências opcionais teria uma maneira padrão de acessar a API de configuração de maneira confiável para determinar se certas condições são especificadas (atualmente é complicado, e qualquer travessia de cystom de node_modules não é padrão nesses casos).
Como outro exemplo, às vezes os consumidores de pacote precisam consumir o código-fonte do pacote em vez da saída compilada usual para compilar o código de maneiras diferentes (normalmente, para mim, tenho vontade de fazer isso com o Webpack).
Em geral, há problemas com esse tipo de coisa, que o NPM até agora não oferece uma maneira comum de lidar.
autores de pacotes e seus usuários
Este recurso permitiria aos autores de pacotes, de uma forma padrão, adicionar recursos aos seus pacotes onde eles podem dizer "Oh, você deseja que o CSS seja externo em vez de embutido nos arquivos de pacote usuais, sem problemas, basta adicionar tal- e tal opção na configuração do seu projeto, então este pacote irá revelar automaticamente qualquer CSS de sua saída ", e então dada a configuração padrão, o autor do pacote pode usar Webpack, Babel, ou qualquer ferramenta desejada, para alcançar o resultado.
Nesse sentido, todos os pacotes teriam alguma forma padrão de permitir aos usuários comunicar opções a eles, onde as opções podem ditar conjuntos alternativos de dependências ou etapas de construção, independentemente de quais arquivos-fonte ou ferramentas de construção o pacote usa.
Haveria configuração no lado do usuário, mas tais opções seriam mapeadas para configuração no lado do pacote que ditaria dependências (e, portanto, ferramentas de construção) a serem executadas durante a instalação, ou similar.
Pude ver a maioria dos pacotes enviando a saída do código-fonte padrão e alguns usuários personalizando-o.
Acontece frequentemente que a melhor maneira de obter o código-fonte TypeScript para compilar, com recursos completos que de outra forma não são
O TypeScript proclama que os consumidores nunca devem transpilar a fonte do TypeScript, mas eles cavaram um buraco no qual pode ser uma necessidade devido a esse problema vinculado. Estou usando-o apenas como um exemplo em que um padrão de configuração pode ser de grande utilidade.
Esse recurso será incrível porque às vezes os desenvolvedores enfrentam muitas dificuldades para consertar esses tipos de problemas.
Comentários muito úteis
Esse recurso será incrível porque às vezes os desenvolvedores enfrentam muitas dificuldades para consertar esses tipos de problemas.