Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免为所有项目反复下载节点JS模块_Javascript_Node.js_Windows_Npm - Fatal编程技术网

Javascript 避免为所有项目反复下载节点JS模块

Javascript 避免为所有项目反复下载节点JS模块,javascript,node.js,windows,npm,Javascript,Node.js,Windows,Npm,我正在学习NodeJS和Electron应用程序开发,目前我使用的每个示例应用程序都让我运行命令npm install,这将导致node_模块下载到项目文件夹中。这导致了大量的磁盘使用,因为许多应用程序反复使用相同的节点模块 有没有办法将所有项目所需的所有节点模块安装到一个中心位置,并使它们都使用这1个模块源 更新 我的另一个担忧。如果我正在构建的Electron应用程序打包为可安装的.exe文件。当应用程序在另一台用户PC上运行时,他们是否能够从这些全局节点软件包中打包所需的功能?有两种安装

我正在学习NodeJS和Electron应用程序开发,目前我使用的每个示例应用程序都让我运行命令
npm install
,这将导致node_模块下载到项目文件夹中。这导致了大量的磁盘使用,因为许多应用程序反复使用相同的节点模块

有没有办法将所有项目所需的所有节点模块安装到一个中心位置,并使它们都使用这1个模块源


更新
我的另一个担忧。如果我正在构建的Electron应用程序打包为可安装的.exe文件。当应用程序在另一台用户PC上运行时,他们是否能够从这些全局节点软件包中打包所需的功能?

有两种安装npm软件包的方法:本地或全局。 要全局下载软件包,只需使用命令
npm install-g
如果要将模块用作命令行工具,建议使用此选项。

更新 您始终可以使用:
npm-link(在package-dir中)
npm-link[/][@]
将只在您的磁盘上安装一次模块,并且每隔一次额外的时间只会将符号链接到该模块。

即使此线程很旧,这里也没有提到正确的答案,因此让我更新此线程以供将来的读者使用:

是的,有一件事正好解决了你刚才描述的问题

它叫PNPM:

基本上,它会正常执行所有npm命令,但使用
pnpm install
而不是
npm install
将所有npm模块安装到全局文件夹中一次,然后将当前项目的节点模块链接到该全局位置

因此,下次其他项目需要包X时,PNPM将首先检查该包是否已存在于全局位置,如果该包已存在,则只会再次链接到该文件夹


这样,每个npm软件包在您的驱动器上只存在一次,您可以避免重复。

@Davidlrnt我刚刚测试了在两个单独的Electron project文件夹上运行
bower install jquery
,而烦人文件夹最终下载了一份jquery.js。有没有办法让它全球化。我正在学习/玩JS Electron应用程序,每个库安装1个可供任何应用程序使用。我设置的每个项目都有50mb的节点模块,在每个项目中,大多数模块都是彼此使用的相同模块。我不确定这是否被视为命令行使用?模块包含在项目JS文件中,然后我在项目上运行
npm start
,启动演示应用程序windows@JasonDavis现在,electron快速启动节点_模块为123MB,带有electron Forge的空ES6/7项目为315MB。。。您是否找到了全局移动节点_模块的方法?