在Node.js项目上工作时,通常在node_modules
文件夹中安装大量依赖项是很常见的。该文件夹可能很大,并且在备份或将项目转移到Dropbox时可能会减慢同步过程。
要克服此问题,您可以使用rsync,这是一种强大的命令行工具来同步文件和目录,以及一个不包括node_modules
文件夹的bash脚本,还可以过滤您指定的.gitignore
文件中的任何内容。在本文中,我将指导您进行设置和使用此bash脚本在忽略node_modules
文件夹时同步您的node.js项目的过程。
步骤1:创建bash脚本
要开始,打开您喜欢的文本编辑器并创建一个新文件。您可以将其命名为sync-node-projects.sh
。将以下代码粘贴到文件中:
#!/usr/bin/env bash
set -e # Exit on error
src_dir="$HOME/Projects/"
dest_dir="$HOME/Dropbox/Projects-Backup/"
# run rsync
rsync -a --delete \
--filter=':- .gitignore' \
--exclude='node_modules' \
--exclude='.git' \
--exclude='.DS_Store' \
--chmod='F-w' \
"$src_dir" "$dest_dir"
让我们浏览脚本并了解每个部分的作用:
- 第一行(
#!/usr/bin/env bash
)将脚本解释器指定为bash。 -
set -e
命令确保脚本在其内部的任何命令返回非零状态,表示错误。 -
src_dir
变量定义了您的node.js项目所在的源目录路径。用适合您的系统的路径更新。 -
dest_dir
变量定义了目标目录路径,您要备份或传输项目。修改它以适合您的需求。 -
rsync
命令负责同步文件和目录。让我们检查一下其选择:-
-a
标志代表“存档模式”,是同步文件的方便方式,同时保留其权限,所有权和其他属性。 -
--delete
选项可确保在同步期间删除目的地中存在但没有删除源中的任何文件或目录。这有助于保持两个位置相同。 -
--filter=':- .gitignore'
标志将.gitignore
文件中指定的文件和目录排除在同步中。这样可以确保git忽略的文件也被rsync忽略。 -
--exclude='node_modules'
选项告诉rsync跳过同步node_modules
文件夹,这可能是较大且不需要用于备份或转移的目的。 -
--exclude='.git'
标志不包括.git
文件夹,因为它不是同步的,并且可能很大。 -
--exclude='.DS_Store'
选项不包括.DS_Store
文件,该文件特定于MacOS,包含与同步无关的元数据。 -
--chmod='F-w'
标志删除了目标目录中所有文件的写入权限,以确保它们保持仅阅读。这样可以防止备份位置中的意外修改。
-
步骤2:保存并使脚本可执行
将脚本粘贴到文本编辑器中后,保存文件并导航到使用终端保存的位置。要使脚本可执行,请运行以下命令:
chmod +x sync-node-project.sh
此命令授予脚本执行权限。
步骤3:运行脚本
要同步您的node.js项目,打开终端并导航到脚本的位置。通过运行以下命令来执行脚本:
./sync-node-project.sh
脚本将开始从源目录(src_dir
)将您的node.js项目同步到目标目录(dest_dir
),不包括node_modules
文件夹。
结论
恭喜!您已经成功设置了一个BASH脚本,该脚本使用Rsync在忽略node_modules
文件夹的同时同步node.js项目。通过将此文件夹从同步过程中排除,您可以节省时间和空间,尤其是在使用大型项目时。请记住,每当您想同步项目时运行脚本,并且所有更改都将被转移,同时将不必要的node_modules
文件夹置于方程之外。