2

我已经安装了大部分的NPM与-g如何创建新的应用程序项目而无需一次又一次下载和安装npm模块?

但是全球模块,我看到,每当我创建一个新的应用项目(例如:角项目)使用约曼,我看到NPM模块再次获得下载和安装在本地node_modules文件夹中。

我认为这是非常浪费的,相同的模块被下载并复制每个新项目。每个新项目的大小大约为160MB。

有没有办法在全局npm node_modules文件夹下不能在本地下载新项目中的模块?无论如何,要自动创建从本地node_modules文件夹到全局安装的npm模块的符号链接?

这可能吗?如何设置?

+0

哈哈。同样在这里....虽然我很有经验,但是这个npm(和Java中的maven)真的很痛苦,所花的时间不仅仅是开发应用程序本身 – 2015-03-04 23:14:12

回答

0

有解决方法,但是这是有意避免等效于DLL地狱或特别是库版本不匹配崩溃。除了160Mb是这个奢侈品的最低价格。离散功能捆绑更好作为一个良好的单位出货 - 相信我

1

这实际上是设计。从Node.js blog

一般来说,经验法则是:

1.如果你安装你想要在你的程序中使用,使用需要的东西(“不管”),然后安装它在本地,在您的项目的根源。

2.如果你正在安装你想在你的shell中使用的东西,在命令行或其他东西上,请全局安装它,这样它的二进制文件就会放到你的PATH环境变量中。

,重要的是你要安装项目依赖本地,因为你不能保证什么是全球的装机量您的机器上可能是可用的部署机器上。诚然,您可以管理两台机器,或者他们可能实际上是同一台机器,但这种情况从未得到保证。

此外,您有一些项目依赖特定版本的npm,您可能已在全球范围内安装了更新,这打破了需要较旧版本的项目,这并不罕见。隔离是保持项目功能的关键。

如果您确实只需要维护一个副本,则可以使用符号链接。 npm link globalnpm

全球安装它,然后NPM链接咖啡脚本或NPM链接快递(如果你是一个支持符号链接的平台上。)然后你只需要更新全局副本更新所有的符号链接以及。

请注意,符号链接选项实际上只与手动初始化项目相关;像Yeoman这样的发电机将始终使用本地,因为他们遵循谷物。

+1

还要注意,npm **不会每次下载新的模块副本安装。它维护一个[本地缓存](https://www.npmjs.org/doc/cli/npm-cache.html)并从那里复制文件。 (然而,它在安装过程中会ping通注册表以检查更新的版本,这是一个非常小的请求。) – josh3736 2014-12-02 23:48:01

相关问题