用Grunt编译更少的文件

时间:2014-07-16 13:37:07

标签: javascript css node.js gruntjs less

在这里向Grunt完成新手,但基本上我正在尝试使用Grunt做一些事情。缩小JS文件,并将多个LESS文件编译成一个CSS文件。

javascript位工作,即我的文件custom.js压缩到一个名为custom.min.js的文件,但是LESS位根本不起作用(没有错误,只是没有编译)。谁能明白这是为什么?

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      build: {
        src: 'scripts/custom.js',
        dest: 'scripts/custom.min.js'
      }
    },
    less: {
      build: {
        src: 'less/*.less',
        dest: 'style.css'
      }
    },
    watch: {
        files: ['scripts/custom.js'],
        tasks: ['uglify','less']
    }

  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-less');

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

};

3 个答案:

答案 0 :(得分:2)

您根本不会调用LESS任务。要调用它,请在已注册的任务中添加任务名称

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

请参阅文档以了解有关任务注册的更多信息:http://gruntjs.com/creating-tasks

编辑:

我看到你创建了一个watch任务,所以如果你不是手动调用LESS任务而是通过观察文件,请务必在终端中执行grunt watch(而不是关闭终端) Windows)在修改文件之前

答案 1 :(得分:1)

你应该在watch语句中包含对less任务的调用,例如:

         watch: {
            livereload: {
              options: { livereload: true },
              files: ["public/css/main.css", "public/css/less/*.less", "public/html/*.html", "public/js/*.js"]
            },
            scripts: {
                files: ["public/js/*.js"],
                tasks: ["jshint"]
            },
            less: {
                files: ["public/css/*.less", "public/css/less/*.less"],
                tasks: ["less", "csslint"], 
                options: {
                    nospawn: true
                }
            }
        },
        less: {
            development: {
                options: {
                    compress: true,
                    yuicompress: false,
                    optimization: 2,
                    cleancss:false,  
                    paths: ["css"],   
                    syncImport: false,
                    strictUnits:false,
                    strictMath: true,
                    strictImports: true,
                    ieCompat: false    
                },
                files: {
                    "public/css/main.css": "public/css/main.less"
                }
            }
        }

然后还只需使用watch注册默认任务:

grunt.registerTask("default", ["express", "open:dev", "watch"]); 

答案 2 :(得分:0)

将所有较少的文件移动到一个文件中,如下所示:

Somefile.less:

@import '../bootstrap/bootstrap.less';
@import 'site.less';

尝试以下方法:

less: {
  build: {
    files: {
        'style.css': 'less/somefile.less'
    }
  }
}