boundries → boundaries
[fnpeditor.git] / Gruntfile.js
index 5c85ee0..8417c15 100644 (file)
@@ -2,9 +2,9 @@
 
 module.exports = function(grunt) {
     'use strict';
 
 module.exports = function(grunt) {
     'use strict';
-
     var build_output_dir = grunt.option('output-dir') || 'build',
     var build_output_dir = grunt.option('output-dir') || 'build',
-        less_files = {};
+        less_files = {},
+        jshint_targets = grunt.option('jshint-targets');
 
     less_files[build_output_dir + '/rng.css'] = 'src/editor/styles/main.less';
 
 
     less_files[build_output_dir + '/rng.css'] = 'src/editor/styles/main.less';
 
@@ -12,11 +12,18 @@ module.exports = function(grunt) {
         requirejs: {
           compile: {
             options: {
         requirejs: {
           compile: {
             options: {
+              useStrict: true,
               baseUrl: 'src/editor',
               mainConfigFile: 'src/editor/entrypoint.js',
               out: build_output_dir + '/rng.js',
               name: 'entrypoint',
               baseUrl: 'src/editor',
               mainConfigFile: 'src/editor/entrypoint.js',
               out: build_output_dir + '/rng.js',
               name: 'entrypoint',
-              include: ['libs/require']
+              include: ['libs/require', 'libs/ace/mode-xml'],
+              generateSourceMaps: true,
+
+              // The following two settings are required for source maps to work,
+              // see: http://requirejs.org/docs/optimization.html#sourcemaps
+              preserveLicenseComments: false,
+              optimize: grunt.option('optimize') || 'uglify2'
             }
           }
         },
             }
           }
         },
@@ -25,13 +32,14 @@ module.exports = function(grunt) {
                 options: {
                     paths: [''],
                     cleancss: true,
                 options: {
                     paths: [''],
                     cleancss: true,
-                    relativeUrls: true
+                    relativeUrls: true,
+                    rootpath: 'src/editor/styles/'
                 },
                 files: less_files,
             },
         },
         jshint: {
                 },
                 files: less_files,
             },
         },
         jshint: {
-            all: ['Gruntfile.js', 'src/**/*.js'],
+            all: jshint_targets ? jshint_targets.split(',') : ['Gruntfile.js', 'src/**/*.js'],
             options: {
                 jshintrc: '.jshintrc'
             }
             options: {
                 jshintrc: '.jshintrc'
             }
@@ -42,6 +50,18 @@ module.exports = function(grunt) {
               {src: ['libs/bootstrap/img/**'], dest: build_output_dir+'/'},
             ]
           }
               {src: ['libs/bootstrap/img/**'], dest: build_output_dir+'/'},
             ]
           }
+        },
+        githooks: {
+            all: {
+                options: {
+                    dest: grunt.option('git-hooks-dir') || '.git/hooks',
+                },
+                'pre-commit': {
+                    taskNames: ['lint'],
+                    args: '--no-color',
+                    template: 'pre-commit.template.js'
+                }
+            }
         }
     });
 
         }
     });
 
@@ -49,6 +69,7 @@ module.exports = function(grunt) {
     grunt.loadNpmTasks('grunt-contrib-less');
     grunt.loadNpmTasks('grunt-contrib-jshint');
     grunt.loadNpmTasks('grunt-contrib-copy');
     grunt.loadNpmTasks('grunt-contrib-less');
     grunt.loadNpmTasks('grunt-contrib-jshint');
     grunt.loadNpmTasks('grunt-contrib-copy');
+    grunt.loadNpmTasks('grunt-githooks');
 
     grunt.registerTask('build', ['requirejs', 'less:production', 'copy:resources']);
     grunt.registerTask('lint', ['jshint']);
 
     grunt.registerTask('build', ['requirejs', 'less:production', 'copy:resources']);
     grunt.registerTask('lint', ['jshint']);