我有一个Node.js
项目(实际上是一个Firebase
项目),我在Google Drive
上有代码。 (我可以在这里使用Dropbox
代替。重要的是代码文件是镜像的。)
现在我想在另一台计算机上开发这个项目。我不明白如何处理node_modules
目录。目前有15,000个令人惊叹的文件。我应该将它们排除在镜像之外吗?
或者这只是一个糟糕的设置?
答案 0 :(得分:3)
由于使用npm install
命令创建了node_modules文件夹,因此您可以在上传到Google云端硬盘文件夹时完全排除该文件夹。
从其他计算机获取文件时,只需再次运行该命令即可在node_modules文件夹中安装所有依赖项。
答案 1 :(得分:1)
有了保管箱,可以ignore files/directories使用终端了,现在很容易做到。
我建立了一个节点CLI Dropbox Ignore node_modules来非常容易地做到这一点。
答案 2 :(得分:0)
这真是一个糟糕的设置。建议使用Version控制系统来处理源代码。
很少有版本控制系统,
在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容器中,则将无法正常工作,因为符号链接将被忽略。