我想保留我的所有节点项目保存在Dropbox中,除了我想排除所有node_modules目录同步到Dropbox。我曾经通过将这些目录符号链接在不同的位置来实现这一点,但最近的npm版本已经通过不允许npm_modules成为符号链接来破坏了这种能力。
node_modules
npm_modules
slwdgvem1#
以下命令将查找并添加Dropbox中的所有顶级node_module目录。也就是说,它将在另一个node_modules目录中添加node_module目录,而不是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/
xargs
xattr
感谢@shuckster提供以下建议,消除了额外的grep步骤:-prune find选项可以比两个grep管道更快地执行上述任务:
-prune
find ~/Dropbox -name node_modules -prune | xargs -I {} -t -L 1 xattr -w com.dropbox.ignored 1 "{}"
型完整的命令explained here。感谢@shuckster提供以下bash函数,该函数将在npm安装后自动运行另外,我发现在我的.bashrc中为npm创建一个函数来在安装后执行权限更新是很有帮助的:
.bashrc
npm
npm() { case "$1" in "install"|"i"|"ci") command npm "$@" if [[ $? -eq 0 && -d ./node_modules ]]; then xattr -w com.dropbox.ignored 1 ./node_modules echo "Added Dropbox-ignore permission to node_modules" fi ;; *) command npm "$@" ;; esac }
型
1条答案
按热度按时间slwdgvem1#
以下命令将查找并添加Dropbox中的所有顶级node_module目录。也就是说,它将在另一个
node_modules
目录中添加node_module
目录,而不是node_module
目录(因为顶级目录已经被忽略了)。字符串
命令分解:
~/Dropbox
中的所有目录grep
筛选仅以node_modules
结尾的目录grep
从这些目录中排除还包含node_modules/
的目录**xargs
将此目录作为参数传递xattr
命令来告诉dropbox忽略它node_modules
结尾,但也包含node_modules/
,则该目录包含在更高级别的node_modules
目录中,因此我们可以跳过它,因为我们已经忽略了更高级别的目录。感谢@shuckster提供以下建议,消除了额外的grep步骤:
-prune
find选项可以比两个grep管道更快地执行上述任务:型
完整的命令explained here。
感谢@shuckster提供以下bash函数,该函数将在npm安装后自动运行
另外,我发现在我的
.bashrc
中为npm
创建一个函数来在安装后执行权限更新是很有帮助的:型