如何阻止Yarn执行install时删除node_modules中的指定隐藏文件?
解决Yarn Install删除node_modules中自定义隐藏文件的问题
我之前也碰到过类似的情况——Yarn在执行yarn install时会清理node_modules目录下不属于依赖包的文件,这就是你的.metadata_never_index和.gitkeep被删除的核心原因。下面分享几个可行的解决方案:
方案1:通过Yarn配置直接保护指定文件
你可以在项目根目录创建或编辑.yarnrc.yml文件,添加protectedPatterns配置,明确告诉Yarn不要删除匹配这些规则的文件:
protectedPatterns: - "**/.metadata_never_index" - "**/.gitkeep"
这个配置会让Yarn在清理node_modules时自动跳过这两个文件,完美保留它们的作用。
方案2:利用postinstall脚本自动恢复文件
如果不想修改Yarn全局配置,也可以在package.json中添加一个postinstall脚本,每次yarn install完成后自动重新创建这两个文件:
{ "scripts": { "postinstall": "touch node_modules/.metadata_never_index && touch node_modules/.gitkeep" } }
这样每次安装依赖后,脚本会自动生成这两个隐藏文件,Spotlight的索引限制也能持续生效。
方案3:将文件标记为Git跟踪文件(可选)
如果你不介意把这两个文件纳入版本控制,可以先将它们添加到Git仓库:
git add node_modules/.metadata_never_index node_modules/.gitkeep git commit -m "Add protected files in node_modules"
同时需要修改.gitignore,确保这两个文件不会被忽略:
node_modules/* !node_modules/.metadata_never_index !node_modules/.gitkeep
这种方法的好处是文件会一直存在于仓库中,Yarn不会删除属于仓库跟踪的文件,但缺点是需要维护.gitignore的规则,可能不太适合多人协作的场景。
建议优先使用方案1,这是最直接且不需要额外脚本或版本控制改动的方法。
内容的提问来源于stack exchange,提问作者derralf
相关产品推荐
相关产品推荐

