Node.js 减少生产用节点单元模块的大小

Node.js 减少生产用节点单元模块的大小,node.js,npm,npm-install,node-modules,npm-shrinkwrap,Node.js,Npm,Npm Install,Node Modules,Npm Shrinkwrap,在ngrok的帮助下,我创建了node_模块,用于从localhost将插件上传到在线站点,并在CommandPrompt中使用npm install。但是创建的node_modules文件夹大小为78mb。在这种情况下,我必须通过删除不需要的文件夹来减小大小,因此我浏览了互联网,并得到了两个建议,因为减小大小可能是有效的,它们是:使用--生产模式,另一个是使用收缩包装 作为第一步,我使用命令npm install--production和npm install--only=production

在ngrok的帮助下,我创建了node_模块,用于从localhost将插件上传到在线站点,并在CommandPrompt中使用npm install。但是创建的node_modules文件夹大小为78mb。在这种情况下,我必须通过删除不需要的文件夹来减小大小,因此我浏览了互联网,并得到了两个建议,因为减小大小可能是有效的,它们是:使用--生产模式,另一个是使用收缩包装

作为第一步,我使用命令npm install--productionnpm install--only=production,如下所述:,但我看不到文件夹大小有任何变化

然后参考了如何使用收缩包装来缩小本网站给出的尺寸,并尝试了它,但没有成功

此外,我在这里提到:,其中使用命令modclean-n default:safe我减少了10-11mb

但是,在node_模块中仍然有大量不需要的文件夹。我在package.json中指定了几个必需的依赖项,如下所示:

"dependencies": {
    "atlassian-connect-express": "2.0.0",
    "body-parser": "^1.14.2",
    "compression": "^1.6.0",
    "cookie-parser": "^1.4.0",
    "errorhandler": "^1.4.2",
    "express": "^4.13.3",
    "express-hbs": "*",
    "jugglingdb-sqlite3": "0.0.5",
    "morgan": "^1.6.1",
    "static-expiry": ">=0.0.5"
}

我在package.json中给出的依赖项很少,但我看到在node_模块中创建了大量文件夹。如何减小节点单元模块的大小,是否还有其他过程?

从NPM v3开始,应用程序中的所有依赖项尽可能保持在节点单元模块的顶层-这使NPM更容易删除重复项,并防止Windows上出现一些令人讨厌的“路径过长”错误

需要意识到的重要一点是,当我说“应用程序中的所有依赖项”时,我指的不仅仅是
包.json中的依赖项——所有这些包也都有它们自己的依赖项(它们的依赖项可能有它们自己的依赖项,等等)。这就是为什么
node_modules
中总是有这么多文件夹的原因

例如-有28个依赖项,因此如果您只安装了
节点\ u模块
,那么在您的
节点\ u模块中至少有29个文件夹-并且不考虑子依赖项


因此,为了回答您的问题-除了您指定的内容之外,您不能使您的
node\u模块
更小,因为您正在使用所有这些文件夹!只是不总是以最直接的方式。

请注意,运行
npm install--production
不会从
node\u模块中删除您的设备;您需要先删除
node_模块
,才能看到大小的减小。我不明白的是,为什么NPM在使用--production标志时仍在node_模块中包含未缩小的javascript文件?难道不应该有一种方法只提供小型软件包吗?@nocarrier:All
--production
所做的就是排除开发依赖项,仅此而已。NPM并没有真正为您做出任何关于缩小的决定——只有当包作者以这种方式发布它时,您才能从NPM中获得缩小的代码。如果你想知道为什么不,你必须问NPM开发者,因为我不是通灵者:p