Я реализую клиентское приложение на JavaScript, используя Node.js. Поскольку я буду развертывать программное обеспечение на многих машинах, я хотел бы свести к минимуму размер распространяемого пакета. В частности, я хотел бы удалить все ненужные файлы из node_modules.
Для начала это означает дедупликацию и обрезку дерева зависимостей, что npm
может сделать за меня. Но я также хотел бы удалить все файлы package.json
и (особенно) любые другие файлы, которые не нужны для развертывания. Во многих пакетах, которые я использую, есть множество тестов, несколько версий файлов (минифицированных, браузерных и т. д.) и тому подобное. Мне просто нужны файлы JavaScript, которые фактически используются работающим приложением. В противном случае я буду распространять несколько 100Кб файлов, которые на самом деле не используются.
Я знаю о node-browserify
, но мое приложение будет работать в среде CommonJS, а не в браузере, поэтому я хотел бы хранить модули отдельно и загружать их с помощью require
.
Я думаю о написании плагина для Grunt, который обходит дерево зависимостей, используя required
, извлекает JavaScript файлы, необходимые во время выполнения, и записывает их в древовидную структуру, чтобы их можно было загрузить с помощью require
(просто загружая модули напрямую, без использования package.json
). Но я хотел бы убедиться, что никто не сделал это для меня, прежде чем я возьмусь за это.