我是一名前端开发人员,我将前端项目保存在 OneDrive 中。由于 Node.js 组织依赖项的方式,每个项目都有一个node_modules
目录,其中包含数十兆字节的小文件,这些文件需要很长时间才能同步。
我该怎么做才能避免同步node_modules
目录,同时将项目保留在 OneDrive 中?
答案1
答案2
背景
OneDrive 不允许按名称排除目录,这是不会很快改变:
[OneDrive 代表对 UserVoice 请求的回应:] 目前还不行
有些人推荐在 OneDrive 设置中取消选中你不想同步的目录,但这变得不可能OneDrive 文件按需。
解决方案
但是,您可以通过调整 Node.js 端的内容来解决这个问题。将node_modules
目录设为文件符号链接到不同的地方:
# Open any place outside OneDrive
cd D:\node_dependencies
# Make a symlink target. After linking, node_modules for your project
# will be installed here
mkdir node_modules_for_my_project
# Open the project directory
cd <the project directory>
# Make a *file* link from node_modules to the newly created directory.
# You will need to delete existing node_modules directory if it exists
cmd /C "mklink node_modules D:\node_dependencies\node_modules_for_my_project"
这里最重要的是你创建一个文件符号链接,不是目录一。OneDrive 不会识别和同步此符号链接,而 Node.js 将按预期使用它:
使用 OneDrive v17.3.7101.1018 和 OneDrive 文件按需功能进行了测试。
缺点
这不是一个通用的解决方案。它的缺点是 Explorer、Powershell 和其他工具不会将其识别node_modules
为目录:
但是,基于 Node.js 的代码编辑器可以很好地读取它:
答案3
我发现最好的解决方案是在 OneDrive 文件夹之外创建一个“本地”文件夹,项目将保存在该文件夹内,所有模块都将安装在该文件夹中。这是实际的项目。
为了将其同步到 OneDrive,我手动创建一个“并行”文件夹,并使用“RoboCopy”仅复制我想要的内容。然后您可以安排此任务。
要忽略的文件和文件夹名称/通配符是从 .gitignore 文件中复制的
解决方案基于几篇文章:
您还可以使用 GUI 来创建要安排的 .bat 任务文件。微软的 GUI &ChoEazyCopy GUI 更好
答案4
阅读完这些提议的选项后,我最终决定将所有内容放在 OneDrive 之外,并使用 Robocopy 创建一个脚本,以便在项目文件夹发生变化时备份到 OneDrive。
就像是:
robocopy SOURCE DEST /mir /xd node_modules