2016-05-03 14 views
5

Il nostro processo di distribuzione richiede anni e parte di questa ragione sta passando la cartella node_modules al server di produzione.Riduzione delle dimensioni dei node_modules per la produzione

miei Package.json si presenta così:

{ 
    "name": "coms-sass", 
    "version": "0.0.1", 
    "description": "Sass gulp task for COMS Service Portal", 
    "main": "gulpfile.js", 
    "dependencies": { 
    "angular": "^1.5.5", 
    "angular-sanitize": "=1.5.5", 
    "angular-ui-bootstrap": "^1.3.2", 
    "gridster": "^0.5.6", 
    "gulp": "^3.9.0", 
    "gulp-jshint": "^2.0.0", 
    "gulp-sass": "^2.0.4", 
    "jasmine-core": "^2.4.1", 
    "jquery": "^2.2.3", 
    "jquery.cookie": "^1.4.1", 
    "jshint": "^2.9.1", 
    "jshint-visual-studio": "^1.0.1", 
    "karma": "^0.13.22", 
    "karma-chrome-launcher": "^0.2.2", 
    "karma-phantomjs-launcher": "^1.0.0", 
    "karma-requirejs": "^0.2.6", 
    "lodash": "^4.6.1", 
    "moment": "^2.13.0", 
    "ng-csv": "^0.3.6", 
    "requirejs": "^2.1.0", 
    "bootstrap": "=3.3.5" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "angular-mocks": "^1.5.5", 
    "karma-jasmine": "^0.3.8", 
    "karma-ng-html2js-preprocessor": "^0.2.1", 
    "karma-phantomjs-launcher": "^1.0.0", 
    "karma-requirejs": "^0.2.6", 
    "phantomjs": "^2.1.3", 
    "phantomjs-prebuilt": "^2.1.6" 
    } 
} 

Io, ovviamente, non vogliono distribuire karma e fantasma come parte della costruzione di produzione.

Come posso escluderli per la distribuzione e c'è qualcos'altro che posso fare per ridurre la dimensione della mia cartella node_modules.

+0

Questa è un'applicazione front-end, non è necessaria la cartella 'node_modules' sul server. E se hai davvero bisogno di questi pacchetti, puoi distribuire il file 'package.json' e installare le dipendenze sul tuo server. – undefined

+0

@Vohuman La maggior parte dei casi sono d'accordo con te e mi sento come se fosse il caso qui. Tuttavia, potrebbe non essere sempre vero. Dipende da come sta costruendo la sua app. Si può scegliere di non incorporare alcune librerie e usare invece il 'node_module' dist se è compatibile con browser. –

+0

Come posso escludere il karma e il fantoccio per la produzione? – dagda1

risposta

1

Hai mai pensato di compilare/compilare/traspolare i file di distribuzione e distribuire solo quelli? Cioè trasferire solo cosa è sotto 'dist' o directory simile.

Sembra che tu stia creando un browser con parti di un'applicazione. Per tale app, la directory node_modules contiene principalmente strumenti di compilazione e test che devono essere utilizzati durante la compilazione: non è necessario trasferirli ovunque. Ciò di cui hai bisogno è angolare, jquery e simile, ma quei pacchetti npm contengono molta roba e non dovrebbero essere implementati come è.

È necessario creare un set di file necessari solo al browser dell'utente e trasferirli al server di produzione. Questo è solitamente ciò che viene creato in una directory 'dist' durante la compilazione.

0

Dai un'occhiata alla node-prune:

node-prune è un piccolo strumento per potare i file non necessari dal ./node_modules, come la riduzione dei prezzi, i file di origine dattiloscritto, e così via.

Questo potrebbe essere combinato con altre soluzioni fornite e far parte del processo di costruzione.

Problemi correlati