【问题标题】:Grunt cssmin for .min.css files.min.css 文件的 Grunt cssmin
【发布时间】:2014-02-10 10:45:14
【问题描述】:

我正在使用 grunt 和 cssmin 来缩小我的 css。

但是,在我的 css 资产文件夹中,我有一些具有 .min.css 扩展名的 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' 扩展名?

【问题讨论】:

  • 那么你的问题到底是什么?你有 '!*.min.css' 它将排除具有该扩展名的文件,这是问题所在吗?
  • Ops 没有添加我的问题。查看有问题的编辑。想知道在缩小那些 .min.css 时是否有任何方法可以保留 .min.css 扩展名
  • 不要使用压缩器复制已经压缩的文件。使用 grunt-contrib-copy 移动已经缩小的资产

标签: gruntjs grunt-contrib-cssmin


【解决方案1】:

编辑

请参阅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 扩展名。

【讨论】:

  • 是的,行得通。如果 css 文件名类似于“jquery1.8.3.min.css”,我该如何处理
【解决方案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复制到release/css文件夹作为dest

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

【讨论】:

  • 我不知道:您是在感谢 Decade Moon 的有用答案还是注意到您的不同解决方案?
  • 我的意思是我用另一种方式解决这个问题,我使用 grunt-contrib-copy,将所有 *.min.css 从 src/ 复制到 dest/,Decade 比我好:0
  • 你的回答有点抽象。格式化它以便更好地理解。
猜你喜欢
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2014-03-07
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
相关资源
最近更新 更多