减less生产的node_modules的大小

我们的部署过程需要很node_modules ,部分原因是将node_modules文件夹传递给生产服务器。

我的Package.json看起来像这样:

 { "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" } } 

我显然不想把业力和幻影作为生产构build的一部分。

我如何排除他们的部署,还有什么我可以做的,以减less我的node_modules文件夹的大小。

有标志 – 生产到NPM安装。 在生产环境中,你可以安装npm i --production这将跳过所有的devDependencies。 https://www.npmjs.org/doc/misc/npm-config.html#production

另一种可能性是rollup.js或babel的“树木摇动”。 检查这里: http : //www.2ality.com/2015/12/webpack-tree-shaking.html

你有没有想过构build/编译/发布分发文件,只有部署这些文件? 即只传输'dist'或类似目录下的内容。

看起来你正在构build一个面向应用程序部分的浏览器。 对于这样的应用程序, node_modules目录主要包含在编译期间使用的构build和testing工具 – 您不需要在任何地方传输这些工具。 你需要什么,是angular度和jquery和类似的,但这些npm包含很多绒毛,不应该部署也是。

您应该只创build用户浏览器所需的一组文件,并将其传输到生产服务器。 这通常是在构build过程中在'dist'目录中创build的。

看看node-prune :

node-prune是一个小工具,用于从./node_modules不需要的文件,例如markdown, ./node_modules源文件等等。

这可以与其他提供的解决scheme相结合,并成为您的构build过程的一部分。