Search code examples
gitnode.jsgithubnpmgitignore

Suitable `.gitignore` For Node.js


Tree structure

That's how my Node.js project is organized:

/
| - node_modules               [+ INCLUDE]
|   | - my-mod1
|   |   | - node_modules       [- IGNORE]
|   |   |   | - external-mod1 
|   |   |   | - external-mod2 
|   |   | - src
|   |   |   | - node_modules   [+ INCLUDE]
|   |   |   |   | - my-mod2 
|   |   |   |   | - my-mod3
|   | - my-mod4

My plan

When publishing my project to GitHub:

  • I want to include my-mods.
  • I don't want to include the external-mods.

That means:

  • I want to include the top-level /node_modules folder.
  • I don't want to include node_modules folders which are direct childs of a module folder.
  • But I want to include node_moduels folders which are childs of a src folder.

What I did

I added the following lines to /.gitignore:

#################  
## npm
#################

npm-debug.log
node_modules/
!/node_modules/
!src/node_modules/

My question

Which .gitignore rules do I need to include the right node_modules folders (as described above)?

Thanks - if anything's unclear, please comment.


Solution

  • Since your structure is quite organized you could use this pattern to accomplish the task.

    /node_modules/*/node-modules/ 
    

    The above pattern will ignore node_modules under module folders, my-mod1,my-mod4 and others.

    The above line will still allow the node_modules under src directory to be included when you push to github.