2013-06-21 10 views
6

Sto implementando un'applicazione client in JavaScript utilizzando Node.js. Poiché distribuirò il software su molte macchine, vorrei ridurre al minimo le dimensioni del pacchetto che distribuisco. In particolare, vorrei rimuovere tutti i file non necessari da node_modules.Compilazione di node_modules per la distribuzione lato client

Per i principianti ciò significa dedurre e sfoltire l'albero delle dipendenze, che npm può fare per me. Ma vorrei anche rimuovere tutti i file package.json e (soprattutto) tutti gli altri file che non sono necessari per la distribuzione. In molti dei pacchetti che sto usando ci sono tonnellate di test, versioni multiple di file (minified, browserified, ecc.) E simili. Ho solo bisogno dei file JavaScript effettivamente utilizzati dall'app in esecuzione. Altrimenti distribuirò alcuni 100Kb di file che non sono effettivamente usati.

Conosco lo node-browserify ma la mia app verrà eseguita in un ambiente CommonJS, non un browser, quindi mi piacerebbe tenere separati i moduli e caricarli con require.

Sto pensando di scrivere un plugin Grunt che cammina l'albero delle dipendenze utilizzando required, tira fuori i file JavaScript necessari in fase di esecuzione e li scrive una struttura ad albero in modo che possano essere caricati usando require (basta caricare i moduli direttamente senza necessitando di un package.json). Ma mi piacerebbe assicurarmi che nessuno mi abbia fatto questo prima di affrontarlo.

risposta

2

FWIW: grunt-package-minifier. Il mio caso d'uso è un po 'insolito poiché stiamo sviluppando uno cross-browser extension framework. Come lo Browserify ea differenza delle distribuzioni NodeJS standard, vogliamo ridurre al minimo le dimensioni della nostra distribuzione, inclusi tutti i moduli CommonJS. Ma a differenza di Browserify supportiamo CommonJS in modo che possiamo mantenere la struttura del modulo piuttosto che concatenare tutto in un unico grande file.

In sostanza spoglio tutti i package.json, README, file di test, ecc. Da node_modules ma mantieni i file JavaScript essenziali in una struttura che può essere utilizzata da un caricatore di moduli CommonJS.

2

Grun-package-minifier non si trova (Questa non è una risposta reale. Volevo COMMET nel precedente risposta, ma non ho una reputazione sufficiente ancora :().

NPM installare grugnito-package-minifier --save-dev password:. NPM WARN package.json [email protected] Nessun campo repository npm WARN package.json [email protected] Nessun dati README npm ERR 404 404 Not Found:! grugnito-pacchetto- minificatore npm ERR! 404 npm ERR! 404 'grunt-package-minifier' non è nel registro di NPM.

+0

I prob abilmente non lo ha aggiunto a NPM ma è disponibile da Github tramite il link nella mia risposta. –