node_modules 文件夹太大
Posted
技术标签:
【中文标题】node_modules 文件夹太大【英文标题】:node_modules folder too large 【发布时间】:2017-06-22 21:12:56 【问题描述】:我使用 Gulp 已经有一段时间了,要么我没有注意到它从一开始就占用了这么多空间,要么尺寸一直在增长。
我只将它用于非常正常的前端工作。比如这是我gulpfile.js
的请求部分:
var gulp = require('gulp'),
autoprefixer = require('gulp-autoprefixer'),
browserSync = require('browser-sync'),
concat = require('gulp-concat'),
copy = require('gulp-copy'),
del = require('del'),
htmlmin = require('gulp-htmlmin'),
merge = require('merge-stream'),
streamqueue = require('streamqueue'),
cleancss = require('gulp-clean-css'),
gulpif = require('gulp-if'),
newer = require('gulp-newer'),
imgmin = require('gulp-imagemin'),
plumber = require('gulp-plumber'),
postcss = require('gulp-postcss'),
order = require('gulp-order'),
rename = require('gulp-rename'),
runSequence = require('run-sequence'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
uglify = require('gulp-uglify'),
uncss = require('gulp-uncss');
现在,根据du -sh
,node_modules 的重量为 2.2GB,我认为这太过分了。我想更深入地挖掘,所以我查看了所有根模块:
我在这里可能很天真,但我只是期待一些 javascript 功能,我不明白这些模块(尤其是***模块)如何或为什么会这么大。
Gulp 就是这样设计的吗?我是在倒着做吗?我可以改进这个(除了不使用它/那些)吗?
【问题讨论】:
您的package.json
中有什么内容? Gulp 不会影响您的 node_modules
。
看看这个。这是一个网站,显示您的依赖项有多少其他依赖项。 uncss 真的很大,因为它有很多其他的依赖项。 npm.anvaka.com/#/view/2d/uncss
@Lucas 绝对。实际上在每个项目中我都必须npm i
。以uncss
为例,它占用 242MB。想想 242MB 的空间中有多少行 javascript。有点不对劲。
每个人都应该在业余时间至少研究一下他们的 node_modules。里面有一些不应该的奇怪的东西。未使用的 dist/ 包含缩小/未缩小文件的目录,.exe 文件的多个副本(x64 和 x86)无论如何都无法在您的系统上运行,使用庞大库的软件包仅借用它们的 stripIndents 功能......这是“我将只使用几个依赖项......”重复数百次。指数增长。
我们都同意了吗?这是一个繁琐的手动实验切除过程(意味着它永远不会完成)还是有工具可以让这更容易?
【参考方案1】:
我想到了一些方法:
更多的是关于你的 package.json,所以如果你可以优化它,这是一个非常好的选择:
将包作为 devDependencies 和依赖项分开,这有助于减少生产模式下的 node_modules 大小(当您在 npm install 上使用–production
标志时)。
用较轻的库或依赖项较少的库替换一些体积较大或依赖项较多的库。
使用node-prune 或modclean 或其他类似的包,从node_modules 中删除不必要的文件。
【讨论】:
以上是关于node_modules 文件夹太大的主要内容,如果未能解决你的问题,请参考以下文章
Webpack+Serverless解决node_modules太大的问题
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法