2017-05-09 38 views
3

我创建了node_modules,用于在ngrok的帮助下从本地主机上载addon到在线站点,并在CommandPrompt中使用npm install。但创建的node_modules文件夹大小为78mb。在这种情况下,我必须通过删除不需要的文件夹,缩小尺寸,所以我上网习惯,并得到了两个建议,因为它可以有效地得到缩小,它们分别是:使用- 生产模式,另一种是使用收缩包装减少生产node_modules的大小

作为第一步骤I中使用的命令NPM安装 - 生产NPM安装--only =生产如这里指定:How do you prevent install of "devDependencies" NPM modules for Node.js (package.json)?,但我din't看到文件夹大小的任何变化。

届时提及如何使用拆封在本网站给出试了一下,以减少大小:https://docs.npmjs.com/cli/shrinkwrap,但没有成功。

此外,我在这里提到:https://www.npmjs.com/package/modclean,其中使用命令modclean -n默认:安全我减少了10-11mb。

但是,我仍然有node_modules大量无用的文件夹。我指定的少数的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_modules创建的文件夹。如何减小node_modules的大小,还有其他的过程吗?

+0

需要注意的是运行'NPM安装--production'不会从'node_modules'删除您devDependancies;您需要先删除'node_modules'才能看到缩小的大小。 – RyanZim

回答

1

从NPM v3开始,应用程序中的所有依赖关系都会保留在您的node_modules的最高级别 - 这使得NPM可以更轻松地移除重复项,并防止出现一些令人讨厌的“路径太长”错误在Windows上。

认识到的重要一点是,当我说“一切都在你的应用程序之间的依赖关系”,我并不仅仅意味着你package.json的那些 - 所有的这些都会有自己的依赖太(和他们的依赖关系可能依赖于他们自己的依赖关系,等等)。这就是为什么node_modules里面总是有这么多文件夹。

为例 - express有28个依赖关系,因此那将会是一种最小的29层夹在你的node_modules,如果这是你安装的唯一的事情 - 这是没有子依赖融通。

所以,要回答你的问题 - 除了你指定的东西,你不能不能使你的node_modules更小,因为你正在使用所有这些文件夹!并不总是以最直接的方式。

+0

我不明白的是使用 - 生产标志,即使为什么NPM包括node_modules非精缩JavaScript文件?难道不应该只有一种方法来提供缩小的软件包吗? – nocarrier

+0

@nocarrier:所有'--production'不排除是发展的依赖,仅此而已。 NPM并没有真正地为你做出任何关于缩小的决定 - 如果程序包作者以这种方式发布它,你只能从NPM中获得缩小的代码。如果你想知道为什么不,你不得不问NPM的开发者,因为我不是通灵者:p –