【问题标题】:Grunt: Why is concat and uglify not working when the watch task sees a file change?Grunt:为什么当 watch 任务看到文件更改时 concat 和 uglify 不起作用?
【发布时间】:2015-09-02 21:38:52
【问题描述】:

当这些文件被更改并被监视时,Grunt 不会 concatuglify 我的 JavaScript 文件。

如果我运行grunt concat,js 文件将按预期连接。

如果我随后运行grunt uglify,文件将按预期进行丑化。

但是,当我简单地运行 grunt 时,监视任务开始并且我更改了一个 javascript 文件,我得到了这个:

$ grunt
Running "watch" task
Waiting...
>> File "src/js/test.js" changed.
Running "uglify:my_target" (uglify) task
>> Destination dest/js/app.min.js not written because src files were empty.
>> No files created.

为什么它在我运行单个命令时有效,但在监视文件更改时无效?

这是我的 grunt 文件:

module.exports = function(grunt) {

// Project configuration.
grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),

  concat: {
      options: {
        separator: ';',
      },
      dist: {
        src: ['src/**/*.js'],
        dest: 'dest/js/app.js',
      },
    },

  uglify: {
    my_target: {
        files: {
          'dest/js/app.min.js': ['<%= concat.dist.dest %>']
        }
    }
  },


  compass: {                  // Task 
    dist: {                   // Target 
      options: {              // Target options 
        sassDir: 'scss',
        cssDir: 'css',
        environment: 'production'
      }
    },
    dev: {                    // Another target 
      options: {
        sassDir: 'scss',
        cssDir: 'css'
      }
    }
  }, 

  watch: {
    css: {
      files: '**/*.scss',
      tasks: ['compass']
    },

    js:  { 
      files: 'src/js/*.js', tasks: [ 'uglify' ] 
    },
  }
});

grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default',['watch', 'compass', 'concat', 'uglify']);
};

【问题讨论】:

    标签: gruntjs grunt-contrib-uglify grunt-contrib-concat


    【解决方案1】:

    我通过更改 watch 部分解决了这个问题。我还将my_target 更改为build

    我的整个 grunt 文件看起来像这样

    module.exports = function(grunt) {
    
    // Project configuration.
    grunt.initConfig({
      pkg: grunt.file.readJSON('package.json'),
    
      concat: {
          options: {
            separator: "\n\n\n",
          },
          dist: {
            src: ['src/**/*.js'],
            dest: 'dest/js/app.js',
          },
        },
    
      uglify: {
        build: {
            files: {
              'dest/js/app.min.js': ['<%= concat.dist.dest %>']
            }
        }
      },
    
    
      compass: {                  // Task 
        dist: {                   // Target 
          options: {              // Target options 
            sassDir: 'scss',
            cssDir: 'css',
            environment: 'production'
          }
        },
        dev: {                    // Another target 
          options: {
            sassDir: 'scss',
            cssDir: 'css'
          }
        }
      }, 
    
      watch: {
        css: {
          files: '**/*.scss',
          tasks: ['compass']
        },
    
        scripts: {
            files: ['<%= concat.dist.dest %>'],
            tasks: ['concat', 'uglify:build'],
            options: {
              atBegin: true,
          }
        }
      }
    });
    
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-compass');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.registerTask('default',['watch', 'compass', 'concat', 'uglify']);
    
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 2018-02-01
      • 2023-03-28
      • 2018-11-27
      相关资源
      最近更新 更多