Сжатие node_modules для развертывания на стороне клиента

Я реализую клиентское приложение на JavaScript с помощью Node.js. Поскольку я буду развертывать программное обеспечение на многих машинах, я хотел бы минимизировать размер распространяемого пакета. В частности, я хотел бы удалить все ненужные файлы из node_modules.

Для начала это означает дедупликацию и сокращение дерева зависимостей, котороеnpm могу сделать для меня. Но я также хотел бы удалить всеpackage.json файлы и (особенно) любые другие файлы, которые не нужны для развертывания. Во многих пакетах, которые я использую, есть тонны тестов, несколько версий файлов (минимизированные, просматриваемые и т. Д.) И тому подобное. Мне просто нужны файлы JavaScript, которые на самом деле используются запущенным приложением. В противном случае я буду распространять несколько файлов размером 100 КБ, которые на самом деле не используются.

Я знаю оnode-browserify но мое приложение будет работать в среде CommonJS, а не в браузере, поэтому я бы хотел разделить модули и загрузить ихrequire.

Я думаю о написании плагина Grunt, который обходит дерево зависимостей с помощьюrequiredизвлекает файлы JavaScript, необходимые во время выполнения, и записывает их в древовидную структуру, чтобы их можно было загрузить с помощьюrequire (просто загрузка модулей напрямую без необходимостиpackage.json). Но я хотел бы убедиться, что никто не сделал это для меня, прежде чем я займусь этим.

Ответы на вопрос(2)

Ваш ответ на вопрос