2014-01-20 12 views
10
'use strict'; 

module.exports = function(grunt) { 
    // Project Configuration 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     watch: { 
      jade: { 
       files: ['app/views/**'], 
       options: { 
        livereload: true, 
       }, 
      }, 
      js: { 
       files: ['!public/build.js', 'gruntfile.js', 'server.js', 'app/**/*.js', 'public/js/**', 'test/**/*.js'], 
       tasks: ['uglify', 'jshint'], 
       options: { 
        livereload: true, 
       }, 
      }, 
      html: { 
       files: ['public/views/**'], 
       options: { 
        livereload: true, 
       }, 
      }, 
      css: { 
       files: ['public/css/**'], 
       options: { 
        livereload: true 
       } 
      } 
     }, 
     jshint: { 
      all: { 
       src: ['!public/build.js', 'gruntfile.js', 'server.js', 'app/**/*.js', 'public/js/**', 'test/**/*.js'], 
       options: { 
        jshintrc: true 
       } 
      } 
     }, 
     uglify: { 
      options: { 
       mangle: false 
      }, 
      dist: { 
       files: { 
        'public/build.js': ['public/js/**/*.js'] 
       } 
      } 
     }, 
     nodemon: { 
      dev: { 
       options: { 
        file: 'server.js', 
        args: [], 
        ignoredFiles: ['public/**'], 
        watchedExtensions: ['js'], 
        nodeArgs: ['--debug'], 
        delayTime: 1, 
        env: { 
         PORT: 3000 
        }, 
        cwd: __dirname 
       } 
      } 
     }, 
     concurrent: { 
      tasks: ['nodemon', 'watch', 'uglify'], 
      options: { 
       logConcurrentOutput: true 
      } 
     }, 
     mochaTest: { 
      options: { 
       reporter: 'spec', 
       require: 'server.js' 
      }, 
      src: ['test/mocha/**/*.js'] 
     }, 
     env: { 
      test: { 
       NODE_ENV: 'test' 
      } 
     }, 
     karma: { 
      unit: { 
       configFile: 'test/karma/karma.conf.js' 
      } 
     } 
    }); 

    //Load NPM tasks 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-mocha-test'); 
    grunt.loadNpmTasks('grunt-karma'); 
    grunt.loadNpmTasks('grunt-nodemon'); 
    grunt.loadNpmTasks('grunt-concurrent'); 
    grunt.loadNpmTasks('grunt-env'); 

    //Making grunt default to force in order not to break the project. 
    grunt.option('force', true); 

    //Default task(s). 
    grunt.registerTask('default', ['jshint', 'concurrent']); 

    //Test task. 
    grunt.registerTask('test', ['env:test', 'mochaTest', 'karma:unit']); 
}; 

public/build.jsファイルを除外しようとしていますが、動作していないようです。私は間違って何をしていますか?grunt-watchタスクで1つのファイルを無視する方法はありますか?

答えて

26

編集:

なぜ時計から除外する必要がありますか?私はあなたの時計にグロブ・パターンは見当たりません。そのファイルで最初に変更されたものを探すというjsタスクです。

オリジナル回答:「!公開/ build.js」

はあなたが動いて最後としては、あなたの時計タスクに含める試みたことがありますか?

ドキュメント据え付けの一部:

「!パターンをして、インオーダー処理され-prefixedマッチが結果セットから一致するファイルを除外」

は私が除外ファイルのことを考えさせます最初は 'public/js/**'パターンで追加されます。

私はあなたのjs watchタスクをこれに変更しようとします。

js: { 
    files: ['gruntfile.js', 'server.js', 'app/**/*.js', 'public/js/**', 'test/**/*.js', '!public/build.js'], 
    tasks: ['uglify', 'jshint'], 
    options: { 
    livereload: true, 
    }, 
}, 
+0

本当にありがとう! –

22

!をファイル名の先頭に追加します。 !public/build.js

jshintignoreファイルに、その中で無視するすべてのファイルを追加することもできます。

関連する問題