Gruntjs 在监视任务期间,Grunt concat不工作

Gruntjs 在监视任务期间,Grunt concat不工作,gruntjs,Gruntjs,如果我运行“grunt concat”,它会按照grunt文件编译我的JS文件(第82行)。然而,当我在做“咕噜手表”(第107行)时,它不会连接起来 从我所看到的,我的文件是好的,但我对grunt相当陌生,所以我很想看看你们是否能看到一个问题 这是我完整的Grunt文件 // All scripts to be included in project go here var _SCRIPTS = [ 'js/prefixfree.js', 'js/jqu

如果我运行“grunt concat”,它会按照grunt文件编译我的JS文件(第82行)。然而,当我在做“咕噜手表”(第107行)时,它不会连接起来

从我所看到的,我的文件是好的,但我对grunt相当陌生,所以我很想看看你们是否能看到一个问题

这是我完整的Grunt文件

    // All scripts to be included in project go here
    var _SCRIPTS = [
      'js/prefixfree.js',
      'js/jquery-1-10-2.js',
      'js/ie-detect.js',
      'js/application.js'
    ];

    var _PORT = 7777;

    module.exports = function(grunt) {

      // load all grunt tasks
      require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

      // Project configuration.
      grunt.initConfig({

        pkg: grunt.file.readJSON('package.json'),

        connect: {
          server: {
            options: {
              port: _PORT,
              base: 'prototype'
            }
          }
        },

        htmlvalidation: {
          options: {

          },
          files: {
            src: ['prototype/*.php']
          },
        },

        jshint: {
          beforeconcat: _SCRIPTS,
          afterconcat: ['js/main.js']
        },

        csslint: {
          check: {
            src: ['css/*.css']
          },
          strict: {
            options: {
              import: 2
            },
            src: ['css/*.css']
          },
          lax: {
            options: {
              import: false
            },
            src: ['css/*.css']
          }
        },

        compass: {
          dev: {
            options: {
              config: 'config.rb',
              force: false
            }
          }
        },

        uglify: {
          options: {
            banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
          },
          dist: {
            files: {
              'js/main.js': ['js/main.js']
            }
          }
        },

        concat: {
          options: {
            stripBanners: true,
            banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
              '<%= grunt.template.today("yyyy-mm-dd") %> */',
          },
          dist: {
            src: _SCRIPTS,
            dest: 'js/main.js',
            nonull: true
          },
        },

        cssmin: {
          add_banner: {
            options: {
              banner: '/* <%= pkg.name %> - v<%= pkg.version %> - ' +
              '<%= grunt.template.today("yyyy-mm-dd") %> */',
            },
            files: {
              'css/style.css': ['css/style.css']
            }
          }
        },

        watch: {
          concat: {
            files: ['js/**/*.js', '!js/main.js'],
            tasks: 'concat',
            options: {
              spawn: false,
            },
          },
          sass: {
            files: ['sass/**/*.scss'],
            tasks: ['compass:dev'],
            options: {
              spawn: false,
            },
          },

          /* watch and see if our javascript files change, or new packages are installed */

          /* watch our files for change, reload */
          livereload: {
            files: ['*.html', 'css/*.css', 'img/*', 'js/*.js'],
            options: {
              livereload: true
            }
          },
        }

      });

      // Default task (Watch)
      grunt.registerTask('default', ['watch']);
      // grunt.registerTask('default', [  'preprocess:dev', 'watch']);

      // Watch with localhost (For Static Templates)
      grunt.registerTask('watch_with_server', [ 'connect:server', 'watch']);

      // TESTING

        // Run all tests
        grunt.registerTask('allTests', [ 'jshint:beforeconcat', 'concat', 'jshint:afterconcat', 'cssLint', 'htmlvalidation']);

        // JS Testing
        grunt.registerTask('jsHint', ['jshint:beforeconcat', 'concat', 'jshint:afterconcat']);

        // CSS Testing csslint
        grunt.registerTask('cssLint', ['csslint:check']);
        grunt.registerTask('cssLintLax', ['csslint:lax']);
        grunt.registerTask('cssLintStrict', ['csslint:strict']);

        // HTML Vaidation
        grunt.registerTask('htmlTest', [ 'htmlvalidation']);
        grunt.registerTask('printenv', function () { console.log(process.env); });

      // Concat and uglify js and minify css for release
      grunt.registerTask('release', [ 'concat:dist', 'uglify', 'cssmin']);

    };
//要包含在项目中的所有脚本都转到此处
变量_脚本=[
“js/prefixfree.js”,
“js/jquery-1-10-2.js”,
'js/ie detect.js',
'js/application.js'
];
var_端口=7777;
module.exports=函数(grunt){
//加载所有grunt任务
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
//项目配置。
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
连接:{
服务器:{
选项:{
端口:_端口,
基地:“原型”
}
}
},
htmlvalidation:{
选项:{
},
档案:{
src:['prototype/*.php']
},
},
jshint:{
BeforeContat:\u脚本,
afterconcat:['js/main.js']
},
csslint:{
检查:{
src:['css/*.css']
},
严格的:{
选项:{
进口:2
},
src:['css/*.css']
},
宽松:{
选项:{
进口:假
},
src:['css/*.css']
}
},
指南针:{
开发人员:{
选项:{
config:'config.rb',
原力:错
}
}
},
丑陋的:{
选项:{
横幅:'/*!*/\n'
},
地区:{
档案:{
'js/main.js':['js/main.js']
}
}
},
康卡特:{
选项:{
脱衣舞横幅:没错,
横幅:'/*!-v-'+
' */',
},
地区:{
src:_脚本,
dest:'js/main.js',
诺尔:是的
},
},
cssmin:{
添加标题:{
选项:{
横幅:'/*-v-'+
' */',
},
档案:{
'css/style.css':['css/style.css']
}
}
},
观察:{
康卡特:{
文件:['js/***.js','!js/main.js'],
任务:“concat”,
选项:{
产卵:假,
},
},
sass:{
文件:['sass/**/*.scss'],
任务:['compass:dev'],
选项:{
产卵:假,
},
},
/*观察我们的javascript文件是否更改,或者是否安装了新的软件包*/
/*查看我们的文件以进行更改、重新加载*/
利弗雷罗德:{
文件:['*.html'、'css/*.css'、'img/*'、'js/*.js'],
选项:{
利弗雷罗德:没错
}
},
}
});
//默认任务(监视)
registerTask('default',['watch']);
//registerTask('default',['preprocess:dev','watch']);
//使用localhost监视(对于静态模板)
registerTask('watch_with_server',['connect:server','watch']);
//测试
//运行所有测试
registerTask('allTests',['jshint:beforeconcat','concat','jshint:afterconcat','cssLint','htmlvalidation']);
//JS测试
registerTask('jsHint',['jsHint:beforeconcat','concat','jsHint:afterconcat']);
//CSS测试csslint
grunt.registerTask('cssLint',['cssLint:check']);
grunt.registerTask('cssLintLax',['csslint:lax']);
registerTask('cssLintStrict',['csslint:strict']);
//HTML验证
grunt.registerTask('htmlTest',['htmlvalidation']);
registerTask('printenv',函数(){console.log(process.env);});
//Concat和uglify js以及缩小css以供发布
grunt.registerTask('release',['concat:dist','uglify','cssmin']);
};

非常感谢

我将“livereload”移动到手表任务中的“concat”上方,使其工作正常。不知道为什么这会有不同,但它的工作

如果有人知道这会影响它的原因,我很想知道。

添加此项并查看:

livereload: {
     files: ['*.html', 'css/*.css', 'img/*', 'js/*.js'],
     options: {
         livereload: true
     }
},
options: {
    livereload: true
},
files: '<%= options.watch.files %>',//might have to change this line
tasks: ['default', 'notify:watch']
livereload:{
文件:['*.html'、'css/*.css'、'img/*'、'js/*.js'],
选项:{
利弗雷罗德:没错
}
},
选项:{
利弗雷罗德:没错
},
文件:“”,//可能必须更改此行
任务:['default','notify:watch']

您是否收到任何错误?保存
.js
文件时,
grunt-watch
是否不触发任何内容?尝试使用
--verbose
选项运行,查看是否出现了任何有趣的问题。最后,我通常将
任务
选项视为一个数组。我知道医生说这两种情况都可以,但也许可以试试
任务:['concat']
?我没有收到任何错误。更改的文件在终端中显示为已更改,但concat未运行。我把“livereload”移到了“concat”上面,成功地让它工作了。对我来说,这似乎是一个奇怪的解决方案,但它正在发挥作用。谢谢