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 文件夹太大的主要内容,如果未能解决你的问题,请参考以下文章

ionic2 因为项目太大,编译导致内存溢出的解决方案

macnodemodules移到windows

Webpack+Serverless解决node_modules太大的问题

windows路径太长无法删除

VUE- 解决插件报错问题

npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法