Gruntfile.js

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        copy: {
            main: {
                files: [
                    {
                        src: [
                            "node_modules/angular/angular.js",
                            "node_modules/angular/angular.min.js",
                            "node_modules/jquery/dist/jquery.min.js",
                            "node_modules/angular-route/angular-route.min.js",
                            "node_modules/angular-messages/angular-messages.min.js",
                            "node_modules/angular-bootstrap/ui-bootstrap-tpls.min.js",
                            "node_modules/angular-local-storage/dist/angular-local-storage.min.js",
                            "node_modules/angular-mocks/angular-mocks.js",
                            "node_modules/angular-animate/angular-animate.min.js"
                        ],
                        dest: "src/main/resources/static/libs/",
                        expand: true,
                        flatten: true
                    },
                    {
                        src: [
                            "node_modules/normalize-css/normalize.css",
                            "node_modules/bootstrap/dist/css/bootstrap.min.css",
                            "node_modules/font-awesome/css/font-awesome.min.css"
                        ],
                        dest: "src/main/resources/static/css/libs/",
                        expand: true,
                        flatten: true
                    },
                    {
                        src: [
                            "node_modules/font-awesome/fonts/*.*"
                        ],
                        dest: "src/main/resources/static/css/fonts",
                        expand: true,
                        flatten: true
                    }
                ]
            }
        },
        sass: {
            dist: {
                files: [{
                    expand: true,
                    src: ['*.scss'],
                    cwd: 'src/main/resources/static/sass',
                    dest: 'src/main/resources/static/css',
                    ext: '.css'
                }]
            }
        },
        watch: {
            css: {
                files: '**/*.scss',
                tasks: ['sass']
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.registerTask('default', ['copy', 'watch']);
};
            

package.json

{
  "name": "ui-shop",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "ssh://git@stash.office.jagex.com:7999/iris/ui-shop.git"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "angular": "~1.5.8",
    "angular-animate": "^1.5.9",
    "angular-bootstrap": "~0.12.2",
    "angular-local-storage": "~0.5.0",
    "angular-messages": "~1.5.8",
    "angular-mocks": "^1.5.8",
    "angular-route": "~1.5.8",
    "bootstrap": "~3.3.7",
    "font-awesome": "^4.7.0",
    "grunt": "^1.0.1",
    "grunt-contrib-copy": "~1.0.0",
    "grunt-contrib-sass": "~1.0.0",
    "grunt-contrib-watch": "~1.0.0",
    "jasmine": "~2.5.2",
    "jasmine-core": "~2.5.2",
    "jquery": "~3.1.1",
    "karma": "~1.3.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-jasmine": "~1.0.2",
    "karma-phantomjs-launcher": "^1.0.2",
    "normalize-css": "~2.3.1"
  }
}