Javascript Grunt监视JS或CSS没有运行任务

Javascript Grunt监视JS或CSS没有运行任务,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我不知道为什么grunt watch没有运行JS或CSS配置 我的Grunt文件位于“工具”文件夹中。项目文件夹结构如下所示: -index.html -js -css -tools --package.json --node modules --gruntfile.js BASE_PATH: '', JS_SOURCE_PATH: 'js/src/', JS_BUILD_PATH: 'js/build/', CSS_SOURCE_PATH:

我不知道为什么grunt watch没有运行JS或CSS配置

我的Grunt文件位于“工具”文件夹中。项目文件夹结构如下所示:

-index.html
-js
-css
-tools
--package.json
--node modules
--gruntfile.js
    BASE_PATH: '',
    JS_SOURCE_PATH:     'js/src/',
    JS_BUILD_PATH:      'js/build/',
    CSS_SOURCE_PATH:    'css/src/',
    CSS_BUILD_PATH:     'css/build/',
以下是我的CSS文件夹结构:

-css
--src
---styles.css
---third-party
----bootstrap.css
-js
--src
---app.js
---third-party
----jquery.js
以下是我的JS文件夹结构:

-css
--src
---styles.css
---third-party
----bootstrap.css
-js
--src
---app.js
---third-party
----jquery.js
这是我的package.json

{
  "name": "my-project-name",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.5",
    "grunt-contrib-cssmin": "^0.10.0",
    "grunt-contrib-jshint": "~0.10.0",
    "grunt-contrib-uglify": "~0.5.0",
    "grunt-contrib-watch": "^0.6.1",
    "matchdep": "^0.3.0"
  }
}
这是我的gruntfile,这是一个似乎不起作用的监视任务:

module.exports = function(grunt){

  //Loads the necessary tasks for this Grunt file.
  require('matchdep').filterDev('grunt-contrib-*').forEach(grunt.loadNpmTasks);

  // Project configuration
  grunt.initConfig({
    // Load package.json file so that access is given to the project name and version number.
    pkg: grunt.file.readJSON('package.json'),

    // Constants for the Gruntfile so we can easily change the path for our environments.
    //note: end with /
    BASE_PATH: '../',
    JS_SOURCE_PATH:     '../js/src/',
    JS_BUILD_PATH:      '../js/build/',
    CSS_SOURCE_PATH:    '../css/src/',
    CSS_BUILD_PATH:     '../css/build/',

    uglify: {
        files: {
            expand: true,
            cwd: '<%= JS_SOURCE_PATH %>',
            src: '**/*.js',
            dest: '<%= JS_BUILD_PATH %>',
            flatten: false,
        }
    },

    jshint: {
        options: {
            jshintrc: '<%= JS_SOURCE_PATH %>.jshintrc',
            force: true
        },
        all: [
                '<%= JS_SOURCE_PATH %>**/*.js',
                '!<%= JS_SOURCE_PATH %>third-party/**/*.js'
            ]
    },

    cssmin: {
        options: {
            keepBreaks: true,
            report: 'gzip'
        },
        minify: {
            expand: true,
            cwd: '<%= CSS_SOURCE_PATH %>',
            src: '**/*.css',
            dest: '<%= CSS_BUILD_PATH %>'
        }
    },

    watch: {
        options: {
            livereload: true,
            nospawn: true
        },
        js: {
            files: ['<%= JS_SOURCE_PATH %>**/*.js'],
            tasks: ['jshint']
        },
        css: {
            files: ['<%= CSS_SOURCE_PATH %>**/*.css'],
            tasks: ['cssmin']
        },
        html: {
            files: ['<%= BASE_PATH %>*.html']
        }
    }
  });


  grunt.registerTask('default', ['jshint', 'uglify', 'cssmin']);

  grunt.registerTask('doit', ['uglify', 'cssmin']);

  grunt.registerTask('css', ['cssmin']);

  grunt.registerTask('hint', ['jshint']);

};

我认为问题在于Gruntile的路径和位置

你有这个:

    BASE_PATH: '../',
    JS_SOURCE_PATH:     '../js/src/',
    JS_BUILD_PATH:      '../js/build/',
    CSS_SOURCE_PATH:    '../css/src/',
    CSS_BUILD_PATH:     '../css/build/',
GrunFile似乎不在根目录中,而是在文件夹中

GrunFile(和package.json、node_模块)需要位于项目的根目录中才能正常工作

如果要更改其pat,可以设置两个参数
--base
--grunfile

尝试将GrunFile移动到项目的根目录中,并按如下方式更改路径:

-index.html
-js
-css
-tools
--package.json
--node modules
--gruntfile.js
    BASE_PATH: '',
    JS_SOURCE_PATH:     'js/src/',
    JS_BUILD_PATH:      'js/build/',
    CSS_SOURCE_PATH:    'css/src/',
    CSS_BUILD_PATH:     'css/build/',
从控制台启动后:

grunt watch

“不工作”是什么意思?一些错误?没有编译?@AlessandroMinoccheri它没有运行任务。例如,当我保存“app.js”时,jshint任务不会运行。对不起,我没说清楚。你的gruntfile在哪里?在哪个文件夹中?@MarioAraque我更新了问题。我的grunt文件与package.json一起位于名为“tools”的文件夹中。您是否尝试键入“grunt watch”?因为您没有任何与watch插件相关的注册任务。Grunfile位于正确的位置。我认为这不是问题所在。当我单独运行所有任务时,它们都能工作。比如“grunt css”和“grunt hint”。只有监视任务不起作用,我认为在保存“监视”文件时应该运行这些任务。+1对于Mdd,GrunFile(在他的情况下)位于正确的位置。尝试从GrunFile中删除选项以测试其是否起作用@MddI确实删除了选项,但它不起作用。我注意到一件事,当我运行grunt watch并保存我的'index.html'文件时,页面会刷新。只是CSS文件和JS文件在保存时没有运行其任务,也没有刷新浏览器。这可能是一个错误,因为您没有任何与“html”监视任务相关的任务。