Kompaktowanie node_modules do wdrożenia po stronie klienta
Implementuję aplikację po stronie klienta w JavaScript przy użyciu Node.js. Ponieważ będę wdrażał oprogramowanie na wielu komputerach, chciałbym zminimalizować rozmiar pakietu, który dystrybuuję. W szczególności chciałbym usunąć niepotrzebne pliki z node_modules.
Na początek oznacza to deduplikację i oczyszczanie drzewa zależności, którenpm
może dla mnie zrobić. Ale chciałbym też usunąć wszystkiepackage.json
pliki i (zwłaszcza) wszelkie inne pliki, które nie są potrzebne do wdrożenia. W wielu pakietach, z których korzystam, jest mnóstwo testów, wiele wersji plików (minifikowanych, przeglądanych itp.) I tym podobnych. Potrzebuję tylko plików JavaScript, które są rzeczywiście używane przez uruchomioną aplikację. W przeciwnym razie rozprowadzę kilka 100 KB plików, które nie są faktycznie używane.
wiem onode-browserify
ale moja aplikacja będzie działać w środowisku CommonJS, a nie w przeglądarce, więc chciałbym zachować moduły osobno i załadować jerequire
.
Zastanawiam się nad napisaniem wtyczki Grunt, która używa drzewa zależności za pomocąrequired
, wyciąga pliki JavaScript potrzebne w czasie wykonywania i zapisuje je w strukturze drzewa, aby można je było załadować za pomocąrequire
(po prostu ładowanie modułów bezpośrednio bez potrzebypackage.json
). Ale chciałbym się upewnić, że nikt mi tego nie zrobił, zanim to zrobię.