如何在 Mac 上的 Dropbox 中递归忽略 node_modules
How to ignore node_modules recursively in Dropbox on a Mac
我想将所有节点项目保存在 Dropbox 中,除了我想排除所有 node_modules
目录同步到 Dropbox。
我过去常常通过将这些目录符号链接在不同的位置来实现这一点,但最近版本的 npm 不允许 npm_modules
成为符号链接,从而破坏了这样做的能力。
以下命令将从 Dropbox 中查找并添加所有顶级 node_module 目录。也就是说,它会在另一个 node_modules
目录中添加 node_module
目录,但不会添加 node_module
目录(因为顶级目录已经被忽略了。
find ~/Dropbox -type d | grep 'node_modules$' | grep -v '/node_modules/' | xargs -I {} -t -L 1 xattr -w com.dropbox.ignored 1 "{}"
命令分解:
- 查找
~/Dropbox
中的所有目录
- 使用
grep
过滤仅以 node_modules
结尾的目录
- 使用
grep
从这些目录中排除还包括 node_modules/
**
- 使用
xargs
将此目录作为参数传递
- 到
xattr
命令告诉 dropbox 忽略它
** 如果目录以 node_modules
结尾但还包含 node_modules/
那么该目录包含在更高级别的 node_modules
目录中,因此我们可以跳过它因为我们已经忽略了更高级别的目录。
我想将所有节点项目保存在 Dropbox 中,除了我想排除所有 node_modules
目录同步到 Dropbox。
我过去常常通过将这些目录符号链接在不同的位置来实现这一点,但最近版本的 npm 不允许 npm_modules
成为符号链接,从而破坏了这样做的能力。
以下命令将从 Dropbox 中查找并添加所有顶级 node_module 目录。也就是说,它会在另一个 node_modules
目录中添加 node_module
目录,但不会添加 node_module
目录(因为顶级目录已经被忽略了。
find ~/Dropbox -type d | grep 'node_modules$' | grep -v '/node_modules/' | xargs -I {} -t -L 1 xattr -w com.dropbox.ignored 1 "{}"
命令分解:
- 查找
~/Dropbox
中的所有目录
- 使用
grep
过滤仅以node_modules
结尾的目录
- 使用
grep
从这些目录中排除还包括node_modules/
** - 使用
xargs
将此目录作为参数传递 - 到
xattr
命令告诉 dropbox 忽略它
** 如果目录以 node_modules
结尾但还包含 node_modules/
那么该目录包含在更高级别的 node_modules
目录中,因此我们可以跳过它因为我们已经忽略了更高级别的目录。