【问题标题】:Grunt watch is not detecting the changes made to the files after the first task is run运行第一个任务后,Grunt watch 未检测到对文件所做的更改
【发布时间】:2018-08-27 03:38:15
【问题描述】:

我有一个简单的 Gruntfile 配置为运行 sass,然后是 autoprefix (postcss),最后是 cssmin。它应该在检测到 scss 文件中的更改以及生成的 css 文件中的后续更改(在运行 sass 之后)之后按该顺序运行任务。但是,它只运行 sass 任务。这是我的 gruntfile:

module.exports = function(grunt) {

  grunt.initConfig({

    watch: {
      sass: {
        files: 'dev/scss/**/*.scss', 
        tasks: ['sass']
      },
      autoprefix: {
        files: 'dist/css/main.css',
        tasks: ['postcss']
      },
      cssmin: {
        files: 'dist/css/main-prefixed.css',
        tasks: ['cssmin']
      },
      js_concat: {
        files: 'dev/scripts/**/*.js',
        tasks: ['concat']
      },
      js_uglify: {
        files: 'dist/scripts/built.js',
        tasks: ['uglify']
      }
    },

    sass: {
      dev: {
        files: {
          'dist/css/main.css' : 'dev/scss/main.scss'
        }
      }
    },

    cssmin: {
      build: {
        src: 'dist/css/main-prefixed.css',
        dest: 'dist/css/main.min.css'
      }    
    },

    postcss: {
      options: {
        map: true,
        processors: [
          require('autoprefixer')({browsers: ['last 2 versions']})
        ]
      },
      dist: {
        src: 'dist/css/main.css',
        dest: 'dist/css/main-prefixed.css'
      }
    },

    concat: {
      options: {
        separator: '\n\n\n'
      },
      dist: {
        src: ['dev/scripts/*.js'],
        dest: 'dist/scripts/built.js'
      }
    },

    uglify: {
      build: {
        files: {
          'dist/scripts/built.min.js': ['dist/scripts/built.js']
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-postcss');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.registerTask('default', ['watch']);

};

这是文件结构:

Gruntfile.js
dev/
  |__ scss/
        |__ (all scss partials and main.scss file)
dist/
  |__ css/
        |__ main.css
        |__ main-prefixed.css
        |__ main.min.css

当我手动运行任务时,它可以正常工作。

这可能是什么问题?

【问题讨论】:

    标签: gruntjs grunt-contrib-watch postcss autoprefixer


    【解决方案1】:

    不知道为什么您会得到这些结果,但您可以尝试通过稍微不同地配置您的监视任务来解决它。如果你检测到你的 scss 文件发生了变化,只需一个接一个地运行命令链(而不是依靠 watch 来查看每个任务的结果变化并采取行动):

    watch: {
      sass: {
        files: 'dev/scss/**/*.scss', 
        tasks: ['sass', 'postcss', 'cssmin'] // This will run the 3 tasks one after the other.
      },
      js_concat: {
        files: 'dev/scripts/**/*.js',
        tasks: ['concat']
      },
      js_uglify: {
        files: 'dist/scripts/built.js',
        tasks: ['uglify']
      }
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      相关资源
      最近更新 更多