提高前端项目在内网环境中依赖拉取依赖的速度

0 阅读1分钟

前端构建中提高项目拉取依赖的速度

通常在公司内部,大部分服务器是不能直接连接外网的,所以在前端项目构建时,拉取依赖可以通过 nexus 搭建npm私库来解决,但是通常会收到网络、IO性能、Nexus 服务器的性能,可能会造成构建的时间过长(在执行 npm install的时过长),影响项目的效率的问题。

1. 将 npm 的缓存目录挂在到宿主机的某个目录中

在构建前端项目的时候,将 node 镜像中的 npm 缓存目录挂载到宿主机的某个目录 拉起nodejs 镜像的时候过载

-v /Users/wjy/Desktop/build/frontcache:/root/.npm
2. 将每一个项目的 node_modules 挂载到宿主机中
-v /WebstormProjects/demo-test:/data 
-v /Desktop/build/front:/data/node_modules

将 node_modules 挂载到宿主机的某一个目录以后,再不修改 package.json 的情况下,此时在执行 npm install 的时候,就会直接使用挂载的依赖,当用到新的插件的时候,通过nexus去拉新的依赖,而后就不用在通过nexus拉取。

需要注意的是:当存在过个项目的时候,需要将每个项目的node_modules挂载目录分开挂在不同的目录中。

例如: 现有两个项目A & 项目B 对应的是两个不同或者有一定交集的package.json,在构建项目 A 时,形成一个 node_modules,并将这个 node_modules 挂载到了 宿主机的 /fort/node/中 ,如果此时在构建项目B的时候,项目的B的 node_modules 挂载目录也为 /fort/node/,在 B 项目执行 npm install 安装依赖时,会将不属于自己的依赖remove掉。

在这里插入图片描述

所以对于 项目A

-v /Desktop/build/front/demoA/:/data/node_modules

所以对于 项目B

-v /Desktop/build/front/demoB/:/data/node_modules

缺点: 在前端的项目过多时,在宿主机上会存在很多个 node_modules ,node_modules 的目录大小可以轻松上几百兆,这样就会存在占用磁盘空间的问题。 优点: node_modules 的文件不需要人工维护

3. 形成一个共通的 node_modules 的压缩包,将这个压缩包,将压缩包挂载到宿主机中。

将产品线中所有使用的常用的插件形成一个 node_modules 的压缩包,在使用的时候将这个压缩包解压,在执行 npm install 的时候,根据当前项目所以用的,进行根据需要进行按装删除。

缺点: 需要人工维护,当产品线增加了新的插件,或者修改插件版本的时候,这个压缩包就要重新生成。 优点: 解决不能共用node_modules占用空间大的问题