我用-g
全局安装了大多数NPM模块但是,我看到每当我使用Yeoman创建一个新的应用程序项目(例如:angular项目)时,我看到npm模块再次被下载并安装在本地node_modules文件夹中。
我认为,为每个新项目下载和复制相同的模块非常浪费。每个新项目的规模大约为160MB。
有没有办法只在新项目中本地下载全局npm node_modules文件夹中尚未提供的模块?比如说,无论如何要自动创建从本地node_modules文件夹到全局安装的npm模块的符号链接?
这可能吗?如何设置?
答案 0 :(得分:1)
这实际上是设计的。来自Node.js blog:
一般来说,经验法则是:
1.如果您要安装要在程序中使用的内容,请使用require('无论什么'),然后在项目的根目录下在本地安装。
2.如果您要在shell中安装要在shell中使用的东西,请在命令行上安装它,全局安装,以便其二进制文件最终位于PATH环境变量中。
在本地安装项目依赖项非常重要,因为您无法保证在部署计算机上可以使用您的计算机上全局安装的内容。没错,你可以管理这两台机器,或者它们实际上可能是同一台机器,但这种情况永远无法保证。
此外,您拥有依赖于特定版本的npm的项目并不罕见,您可能已经为全局安装了更新,打破了需要旧版本的项目。隔离是保持项目正常运转的关键。
如果您真的只需要维护一个副本,则可以使用符号链接。 npm link globalnpm
全局安装,然后npm链接coffee-script或npm link express(如果你在支持符号链接的平台上。)那么你只需要更新全局副本来更新所有的符号链接。 / p>
请注意,符号链接选项实际上仅与手动初始化项目相关;像Yeoman这样的生成器总是使用本地的,因为它们遵循谷物。
答案 1 :(得分:0)
有一些解决方法,但这是故意避免等同于DLL地狱或特定库版本控制不匹配的崩溃。除了160 MB这是一个很小的代价,这个奢侈品。离散功能捆绑包作为一个良好的单位运输更好 - 相信我