Skip to content
This repository was archived by the owner on Apr 20, 2018. It is now read-only.
This repository was archived by the owner on Apr 20, 2018. It is now read-only.

Usemin fails to update CSS file & JS file image paths correctly. #629

@zhongDZ

Description

@zhongDZ

module.exports = function (grunt) {

require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

grunt.initConfig({

pkg: grunt.file.readJSON('package.json'),
banner: '',
game_name : 'diaoyu',//项目名字
//清除目录
clean: {
  all: ['dist/view/<%=game_name%>/**', 'dist/*.*'],
  image: 'dist/static/<%=game_name%>/res',
  css: 'dist/static/<%=game_name%>/css',
  js: 'dist/static/<%=game_name%>/js',
  html: 'dist/view/<%=game_name%>/*'
},

copy: {
  src: {
    files: [
      {expand: true, cwd: 'test1/view/<%=game_name%>', src: ['*.html'], dest: 'dist/view/<%=game_name%>'},
      {expand: true, cwd: 'test1/lib/js', src: ['**/*.js'], dest: 'dist/lib/js'},
      {expand: true, cwd: 'test1/static/common', src: ['**/*.{css,js,mp3}'], dest: 'dist/static/common'}
    ]
  },
  image: {
    files: [
      {expand: true, cwd: 'test1/static/<%=game_name%>', src: ['res/**/*.{png,jpg,jpeg,gif,mp3}'], dest: 'dist/static/<%=game_name%>'}
    ]
  }
},

// 文件合并
concat: {
  options: {
    separator: '',//分隔符号
    stripBanners: true,//允许添加头部
    //在头部添加 js文件名和时间的注释
    banner: '/*! <%=pkg.name%>-<%=pkg.version%>.js <%=grunt.template.today("yyyy-mm-dd") %> */\n'
  },
  js: {
    src: [
      "test1/static/<%=game_name%>/js/*.js"
    ],
    // dest: "dist/html/js/game.min.js"
    dest: "dist/static/<%=game_name%>/js/game.min.js"
  },
  css:{
    src: [
      "test1/static/<%=game_name%>/css/*.css", "test1/static/common/css/*.css", "test1/lib/css/*.css"
    ],
    dest: "dist/static/<%=game_name%>/css/game.min.css"
  }
},

//压缩JS
uglify: {
  prod: {
      files: {
        'dist/static/<%=game_name%>/js/game.min.js': ['test1/static/<%=game_name%>/js/*.js', '!test1/static/<%=game_name%>/js/*.min.js']
      }
  }
},

//这种方法需要将上一步合并的操作生成文件改成libs.min.js
// uglify: {
//   build: {
//     src: 'dest/libs.min.js',
//     dest: 'dest/game.min.js'
//   }
// },

//压缩CSS
cssmin: {
  prod: {
    options: {
      report: 'gzip'
    },
    files: [
      {
        expand: true,
        cwd: 'dist/static/<%=game_name%>',
        src: ['css/*.css'],
        dest: 'dist/static/<%=game_name%>'
      }
    ]
  }
},

//压缩图片
imagemin: {
  prod: {
    options: {
      optimizationLevel: 7,
      pngquant: true
    },
    files: [
      {expand: true, cwd: 'dist/static/<%=game_name%>', src: ['res/**/*.{png,jpg,jpeg,gif,webp,svg}'], dest: 'dist/static/<%=game_name%>'}
    ]
  }
},

rev: {
  options: {
    algorithm: 'sha1',
    length: 8
  },  
  assets: {
      files: [{
          src: [
              'dist/static/<%=game_name%>/**/*.{css,jpg,jpeg,gif,png,js}'
          ]   
      }]  
  }   
},

useminPrepare: {
   html: ['test1/view/<%=game_name%>/*.html'],
   options: {
       // 测试发现这里指定的dest,是usemin引入资源的相对路径的开始
      // 在usemin中设置assetsDirs,不是指定的相对路径
       // List of directories where we should start to look for revved version of the assets referenced in the currently looked at file
       dest: 'dist/static/diaoyu'               // string type                 
   }

},

// 处理html中css、js 引入合并问题
usemin: {
  options: {
    assetsDirs: [
        'dist/static/diaoyu/res/**/*.{png,gif,jpg,jpeg}',
        'dist/static/diaoyu/css/*.css',
        'dist/static/diaoyu/js/*.js'
    ],
    patterns: {
        js: [[/([\w-]+\.png)/, 'replace res in js']]
    }
  },
  
  js: 'dist/static/diaoyu/js/**/*.js',
  css: 'dist/static/diaoyu/css/**/*.css',
  
  html: 'dist/view/diaoyu/**/*.html',
},

//压缩HTML
htmlmin: {
  options: {
    removeComments: true,
    removeCommentsFromCDATA: true,
    collapseWhitespace: true,
    collapseBooleanAttributes: true,
    removeAttributeQuotes: true,
    removeRedundantAttributes: true,
    useShortDoctype: true,
    removeEmptyAttributes: true,
    removeOptionalTags: true
  },
  html: {
    files: [
      {expand: true, cwd: 'dist/view/<%=game_name%>', src: ['*.html'], dest: 'dist/view/<%=game_name%>'}
    ]
  }
}

});

grunt.registerTask('prod', [
'copy', //复制文件
'concat', //合并文件
// 'imagemin', //图片压缩
// 'cssmin', //CSS压缩
'uglify', //JS压缩
'rev', //重置文件名
'usemin:html', //HTML处理
'usemin:css', //HTML处理
'usemin:js', //HTML处理

// 'htmlmin',              //HTML压缩

]);

grunt.registerTask('build', ['clean', 'prod']);
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions