Search code examples
version-controlgruntjsyeomanboweryeoman-generator

Files from Yeoman web-app that needs to be committed in SCM/GIT


When we do "yo webapp" (assuming webapp generator is installed), it scaffold projects which contains file relevant to bower, grunt and then there is app folder, which we all know what's it about.

My question is, out of this structure what are the files that needs to be maintained in SCM, Should it be only app directory or should it whole structure ?(assuming there are no additional grunt task or any build file changes from earlier scaffolding)


Solution

  • Yeoman webapp generator will produce a .gitignore file which includes files that should not be committed to a SCM. This file includes the following directories:

    node_modules
    dist
    .tmp
    .sass-cache
    bower_components
    test/bower_components
    

    It is clear that .tmp and .sass-cache have no reason to be in the repo as they both are only temporary.

    There is however a discussion whether bower (and rarely node) dependencies should be checked in. For most projects I recommend not to.

    Please note that in either case one should never change the packages directly in the bower_components or node_modules folder as any change will be lost at next bower install or npm install. A fork of the original project (either as a independent repo or to folder in the project - e.g. lib) is a better idea - a follow up pull request would then add a lot of karma :)

    The dist folder with the build of the application may be committed depending on your deployment method. There is a very good guide on deployment on Yeoman site.