Grunt可以单独缩小多个文件,而不连接它们吗?

时间:2017-01-26 08:19:02

标签: javascript gruntjs sails.js

我有一个Sailsjs项目,它内置了Grunt。这是tasks/register/prod.js的样子:

module.exports = function(grunt) {
  grunt.registerTask('prod', [
    'compileAssets',
    //'concat',
    'uglify',
    'cssmin',
    'sails-linker:prodJs',
    'sails-linker:prodStyles',
    //'sails-linker:devTpl',
    //'sails-linker:prodJsJade',
    //'sails-linker:prodStylesJade',
    //'sails-linker:devTplJade'
  ]);
};

这是我尝试让Grunt单独缩小文件tasks/config/cssmin.js

module.exports = function(grunt) {

  grunt.config.set('cssmin', {
    dist: {
      src: 'assets/css/test.css',
      dest: '.tmp/public/min/test.min.css'
    }
  });

  grunt.config.set('cssmin', {
    dist: {
      src: 'assets/css/main.css',
      dest: '.tmp/public/min/main.min.css'
    }
  });

  grunt.loadNpmTasks('grunt-contrib-cssmin');
};

这不能正常工作,它只给我main.min.css(缩小)但不是test.min.css。

2 个答案:

答案 0 :(得分:4)

“dist”不是语法的静态部分,而是目标的名称。您可以拥有任意数量的目标,但不能有两个具有相同名称的目标。

grunt.config.set('cssmin', {
  test: {
    src: 'assets/css/test.css',
    dest: '.tmp/public/min/test.min.css'
  },
  main: {
    src: 'assets/css/main.css',
    dest: '.tmp/public/min/main.min.css'
  }
});

运行“cssmin”执行两个目标,“cssmin:test”运行第一个目标,“cssmin:main”运行第二个目标。

答案 1 :(得分:2)

第二次设置cssmin任务的值时,您将覆盖之前的值,因此只返回main.min.css。

要使用cssmin缩小多个单独的文件,您只需设置一次grunt.config,它将如下所示:

module.exports = function(grunt) {

  grunt.config.set('cssmin', {

    dist: {
      src: 'assets/css/test.css',
      dest: '.tmp/public/min/test.min.css'
    },

    dist2: {
      src: 'assets/css/main.css',
      dest: '.tmp/public/min/main.min.css'
    }

  });

  grunt.loadNpmTasks('grunt-contrib-cssmin');
};