2014-02-10 39 views
0

我用grunt和cssmin来缩小我的css。grunt cssmin .min.css文件

但是,在我的CSS资产文件夹中,我有一些css,它有一个.min.css扩展名。因此,当我运行grunt时,只有源文件夹中的.css文件将被缩小到生成文件夹中。源文件夹中具有.min.css的文件将在build文件夹中找到,但.min扩展名将会丢失。即bootstrap.min.css将成为bootstrap.css

我Gruntfile.js是如下

module.exports = function(grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    uglify: { 
     options: { 
     banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' 
     }, 
     build: { 
     files: [{ 
      expand: true, 
      src: '**/*.js', 
      dest: 'resources/front/js', 
      cwd: 'assets/front/js' 
     }] 
     } 
    }, 
    cssmin: { 
     minify: { 
     expand: true, 
     cwd: 'assets/front/css/', 
     src: ['*.css', '*.min.css'], 
     dest: 'resources/front/css/', 
     ext: '.css' 
     } 
    } 

    }); 

    // Load the plugin that provides the "uglify" task. 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-cssmin'); 

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

}; 

有没有什么办法了.min.css文件仍然可以微细化以及在build文件夹中并保留正确的'.min.css'扩展名?

+0

那么你的问题到底是什么?你有'!* .min.css'这将排除扩展名的文件,这是什么问题? –

+0

Ops没有添加我的问题。请参阅有问题的编辑。想知道是否有什么办法在缩小这些扩展名时保留.min.css扩展名.min.css – edelweiss

+0

不要使用缩小器来复制已压缩的文件。使用grunt-contrib-copy移动已经缩小的资产 – nschonni

回答

2

编辑

this answer超过文件名重命名最多的控制。


试试这个:

cssmin: { 
    minify: { 
    files: [{ 
     expand: true, 
     cwd: 'assets/front/css/', 
     src: ['*.css', '!*.min.css'], 
     dest: 'resources/front/css/', 
     ext: '.css' 
    }, { 
     expand: true, 
     cwd: 'assets/front/css/', 
     src: ['*.min.css'], 
     dest: 'resources/front/css/', 
     ext: '.min.css' 
    }] 
    } 
} 

第一个文件块才会再缩小*.css文件并保留.css扩展这些文件。第二个文件块将仅缩小文件*.min.css并保留这些文件的.min.css扩展名。

+0

是有效的。如果CSS文件名是'jquery1.8.3.min.css,我该如何迎合 – edelweiss

+0

Check [this](http://stackoverflow.com/a/18999917/734040)的答案。 –

2

我使用grunt-contrib-copy:只复制* .min.css到dest。

首先,排除所有* .min.css文件

cssmin:{ 
    min:{ 
     files:[{ 
      expand:true, 
      cwd:'css', 
      src:['*.css','!*.min.css'], 
      dest:'release/css', 
      ext:'.min.css' 
      }] 
     } 
    } 

其次,从css文件夹中复制所有* .min.css作为SRC发布/ css文件夹作为DEST

copy:{ 
     main:{ 
      files:[{ 
        // Copy *.min.css 
        expand:true, 
        src:['css/**/*.min.css'], 
        dest:'release/' 
        }] 
      } 
     } 
+1

我不能说:你是否感谢Decade Moon有用的答案或注意到你的不同解决方案? –

+0

我的意思是我解决这个问题的另一种方式,我使用grunt-contrib-copy,从src /复制所有* .min.css到dest /,Decade的比我好:0 –

+0

你的答案有点抽象。格式化它以便更好地理解。 –