I have a file structure similar to the one below:
foo/bar.foo
node_modules/foo/bar.json
node_modules/foo/bar/foo.bar
What I want to do is ignore all the files inside the node_modules
folder except the json
files so that I end up with the following file structure in my repo:
foo/bar.foo
node_modules/foo/bar.json
I tried to find a simple way to do that but I'm not quite there yet.
Here's what I came up with in my .gitignore
:
# ignore everything inside node_modules
node_modules/*
# But descend into directories
!node_modules/**/*.json
What's the most elegant way to achieve the desired result?
P.S. I have no idea what I'm doing.
Ok so I finally found a solution. Here's what did the trick:
# Ignore all the files inside the node_modules folder
node_modules/**/*.*
# Allow only json files inside the node_modules folder
!node_modules/**/*.json
The issue was that by doing node_modules/*
, it would not just ignore files but also folders.
And as the git doc says:
It is not possible to re-include a file if a parent directory of that file is excluded.
So instead I did node_modules/**/*.*
which only exclude files and not folders.
That way, !node_modules/**/*.json
is actually able to allow json files.