云存储时如何处理`node_modules`目录?

时间:2018-05-18 15:23:05

标签: node.js firebase dropbox npm-install

我有一个Node.js项目(实际上是一个Firebase项目),我在Google Drive上有代码。 (我可以在这里使用Dropbox代替。重要的是代码文件是镜像的。)

现在我想在另一台计算机上开发这个项目。我不明白如何处理node_modules目录。目前有15,000个令人惊叹的文件。我应该将它们排除在镜像之外吗?

或者这只是一个糟糕的设置?

5 个答案:

答案 0 :(得分:3)

由于使用npm install命令创建了node_modules文件夹,因此您可以在上传到Google云端硬盘文件夹时完全排除该文件夹。

从其他计算机获取文件时,只需再次运行该命令即可在node_modules文件夹中安装所有依赖项。

答案 1 :(得分:1)

有了保管箱,可以ignore files/directories使用终端了,现在很容易做到。

我建立了一个节点CLI Dropbox Ignore node_modules来非常容易地做到这一点。

答案 2 :(得分:0)

这真是一个糟糕的设置。建议使用Version控制系统来处理源代码。

很少有版本控制系统,

  • Github免费&开源VCS,每个人都可以访问视图&克隆源代码中的源代码。
  • Bitbucked私人资料库

在VCS / Drive / Dropbox中发布代码时,不要包含node_modules文件夹。将使用npm install重新安装所有模块。但请确保所有必需的模块都包含在package.json依赖项中。

例如, 用户A 在没有node_modules的VCS / Drive / Dropbox中添加源。 一旦用户B 获得下载源代码的权限。他将下载并执行命令npm install。一旦所有模块安装的node_modules文件夹将在用户B 机器中自动创建。

答案 3 :(得分:0)

可悲的是,我知道您的痛苦,并且到目前为止,我还没有找到任何解决方案,对于Google Drive和OneDrive,我最喜欢的选择是

我有一个项目文件夹,其中包含很多子文件夹,例如源图像,设计等。 我希望这些文件夹同步到OneDrive,但我的子文件夹(如node_modules)也要同步,因此我找不到避免这种情况的方法。

我使用Git作为源代码,但是我经常更换计算机(台式机和笔记本电脑),而仅依靠Git来做到这一点确实很痛苦。我每次都必须继续克隆项目,有时我只想做一些培训/练习,而又不想将其上传到Github。

也许使用第三方同步软件(例如Insync)可以提供帮助。我将尝试利用他们的试用期进行检查。

答案 4 :(得分:0)

这总是让Dropbox困扰我,因为选择性同步很麻烦。您必须选择要排除的每个文件夹。对.dropboxignore文件的请求太多,但Dropbox不会监听。但是我不知道是否有任何云存储可以提供此功能。

编辑:Dropbox似乎正在使用当前处于测试版https://help.dropbox.com/en-us/files-folders/restore-delete/ignored-files

中的功能

无论如何:使用git总是很好,但是如果您正在使用多个设备,并且不想在每次切换设备时提交并拉/推您的工作,则可以将git存储在Dropbox中。但是仍然有node_modules被同步了好几个小时。

为解决此问题,我构建了一个微型函数,该函数将node_modules移动到Dropbox之外,然后创建到它们的软链接。因此,Dropbox仅同步链接文件,而不同步内容。

DROPNODE=/usr/local/node_modules_dropbox
init_dropnode() {
  if [ -d $DROPNODE ]; then
    mkdir -p $DROPNODE
  fi
}

dropnode(){
  bp=$DROPNODE/`basename "$PWD"`
  p=$bp/node_modules
  if [  -L "./node_modules" ]; then
    rm node_modules
    mkdir -p $p
  else
    if [ -d "./node_modules" ]; then
      mkdir -p $bp
      mv node_modules $p
    else
      mkdir -p $p
    fi
  fi
  ln -s $p node_modules
}

我将它们放在.bash_profile中,因此当我在项目文件夹中时,我只需要执行dropnode,而麻烦就不在我的Dropbox上。

免责声明:这仅适用于Linux / MacO,并且无需在每台计算机上为node_modules转储文件夹设置相同的路径。而且,如果将代码装载到Docker容器中,则将无法正常工作,因为符号链接将被忽略。