返回

iCloud 自动同步 node_modules 的痛点,前端看这里!

前端

从前端入手,搞定 iCloud 自动同步 node_modules 的痛点

很多前端小伙伴都在使用 Mac 作为自己的主力开发机型,而苹果自家 iCloud 同步的便利性相信也不需要我多解释,特别是当你有多台苹果设备时,那种无缝的体验,一旦用了就回不去。可作为一名前端开发,今天,无论你使用的是 Vue 还是 React 亦或任何其他的前端技术栈,几乎是绝对离不开 node.js 的。我们通过终端使用 npm 安装完项目依赖之后,终端经常会提示如下的信息:

The estimated size of the node_modules tree is 657.2MB

最开始看到这个提示的时候,我并没有放在心上,反正工程也不大,随便装就是了,现在硬盘也大,我还怕装不下是吧。

后来,我换了一台 M1 芯片的 MacBook Air,256G 的版本。用了一段时间之后,我突然发现我的 iCloud 存储空间所剩无几,而且这个时候我才发现我硬盘空间也不多了,已经达到了 220 多 G。

我回忆了一下,好像也就安装了一些常用的软件和前端工程,这么快就占了 200 多 G 的存储空间,这也太离谱了吧。

然后我就开始查看是什么文件占用了这么多空间,这一看不得了,我发现我的 ~/node_modules 目录竟然有 160 多 G,而且这些都是我在前端开发中使用 npm 安装的项目依赖。

这么多项目依赖的同步通过 iCloud 在我的其他设备下载了下来,这就导致我的设备的存储空间都岌岌可危了。于是我就在想,有没有一种方法能够从前端入手,解决 iCloud 自动同步 node_modules 的痛点呢?

为了解决这个问题,我查阅了一些资料,最终找到了一种比较有效的方法,可以从前端入手,解决 iCloud 自动同步 node_modules 的痛点,下面我就来分享一下。

解决方案

首先,我们需要安装一个叫做 "npm-shrinkwrap" 的工具,这个工具可以帮助我们生成一个 npm-shrinkwrap.json 文件,这个文件可以帮助我们锁定项目依赖的版本。

安装完 "npm-shrinkwrap" 工具之后,我们在项目根目录执行以下命令:

npm shrinkwrap

执行完这个命令之后,项目根目录下就会生成一个 npm-shrinkwrap.json 文件。

然后,我们需要在项目的 .gitignore 文件中添加以下内容:

node_modules

添加完之后,我们就可以把项目推送到远程仓库了。

最后,我们需要在每台设备上执行以下命令:

npm install --package-lock-only

执行完这个命令之后,项目就会根据 npm-shrinkwrap.json 文件安装项目依赖,而不会再同步 ~/node_modules 目录了。

注意事项

  1. 在执行 "npm shrinkwrap" 命令之前,请确保已经安装了所有的项目依赖。
  2. 在执行 "npm install --package-lock-only" 命令之前,请确保已经将项目克隆到本地。

总结

通过以上方法,我们就可以从前端入手,解决 iCloud 自动同步 node_modules 的痛点。这种方法简单易行,而且不会影响项目开发。如果你也遇到这个问题,不妨尝试一下。