Compactando node_modules para implementação do lado do cliente

Estou implementando um aplicativo do lado do cliente em JavaScript usando o Node.js. Como implantarei o software em muitas máquinas, gostaria de minimizar o tamanho do pacote que distribuo. Em particular, gostaria de remover quaisquer arquivos desnecessários de node_modules.

Para começar, isso significa deduzir e podar a árvore de dependência, quenpm pode fazer por mim. Mas eu também gostaria de remover todo opackage.json arquivos e (especialmente) quaisquer outros arquivos que não sejam necessários para implantação. Em muitos dos pacotes que estou usando há toneladas de testes, várias versões de arquivos (minificadas, navegadas, etc.) e similares. Eu só preciso dos arquivos JavaScript que são realmente usados ​​pelo aplicativo em execução. Caso contrário, distribuirei alguns 100Kb de arquivos que não são realmente usados.

Eu sei sobrenode-browserify mas meu aplicativo será executado em um ambiente CommonJS, não um navegador, então gostaria de manter os módulos separados e carregá-los comrequire.

Estou pensando em escrever um plugin Grunt que percorra a árvore de dependência usandorequired, extrai os arquivos JavaScript necessários no tempo de execução e grava-os em uma estrutura de árvore para que possam ser carregados usandorequire (apenas carregando os módulos diretamente sem precisarpackage.json). Mas eu gostaria de ter certeza de que ninguém fez isso por mim antes de eu resolver isso.

questionAnswers(2)

yourAnswerToTheQuestion