npm安装:如果全局包已存在,请使用全局包,而不是重复安装。

11
使用带有package.json文件的npm install命令时,如何使其使用符合条件的全局安装包而不是再次下载和安装本地包?
我知道link,但是否有一种方法可以实现我所描述的内容?

只是出于好奇,这背后的动机是什么? - Patrick Motard
4
@PatrickMotard 去重 - jsejcksn
1
有许多动机,但最大的一个是为了节省磁盘空间。开发人员可能有10个不同的安装版本的Express、Gulp、Istanbul、NYC或Babel,这只是…一种在磁盘上浪费空间的行为。而且还会浪费开发人员的时间,因为他们需要将文件从一个位置复制到磁盘上的另一个位置。 - Alexander Mills
我不确定这是否可能,但如果可能的话,我很想找出来! - Iain J. Reid
2个回答

2
Yarn在处理重复依赖方面似乎更加出色。因此,请尝试使用yarn install而不是npm install

1

针对特定的一组模块执行此操作的一种方法是,从 dependencies 部分中删除这些模块,并创建一个包含您希望在全局安装的所有模块的 prestart 脚本。

一个简单的例子可能如下所示:

  "scripts": {
    "test": "mocha",
    "prestart": "npm i -g mocha mysql bluebird"
  },

你可以使用其他钩子,比如preinstallprepare,而不是使用prestart。但请注意,这种方法无法直接用于你想要发布的软件包,需要进行更多的处理。

关于运行脚本的帮助,请参考:https://docs.npmjs.com/misc/scripts


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接