我们的部署过程需要很长时间,部分原因是将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"
}
}
我显然不想将业力和幽灵作为生产构建的一部分进行部署。
如何将它们排除在部署之外,还有什么办法可以减少node_modules文件夹的大小。
答案 0 :(得分:4)
有标志 - 生产到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
答案 1 :(得分:1)
您是否考虑过构建/编译/转发分发文件并仅部署这些文件?即仅转移'dist'
或类似目录下的内容。
看起来您正在构建面向应用程序部分的浏览器。对于这样的应用程序,node_modules
目录主要包含在编译期间使用的构建和测试工具 - 您不需要在任何地方传输它们。你需要的是angular和jquery等,但是那些npm包含有很多绒毛,不应该按原样部署。
您应该只创建用户浏览器所需的一组文件,并将这些文件传输到生产服务器。这通常是在构建期间在'dist'
目录中创建的内容。
答案 2 :(得分:0)
查看 node-prune:
node-prune
是一个小工具,用于修剪./node_modules
中不需要的文件,例如markdown,typescript源文件等。
这可以与其他提供的解决方案结合使用,并成为构建过程的一部分。