Grunt usemin不替换子目录或编译的CSS文件中的文件引用

时间:2014-04-11 11:16:22

标签: gruntjs grunt-usemin

我发现grunt-usemin任务设置有点混乱。我正在使用grunt-usemin连接,uglify和rev我的文件。它适用于root index.html文件,但是,其他目录中的文件不会被revved文件引用替换。

我有以下文件结构:

app
  index.html

  subfolderA
  --index.html

  subfolderB
  --index.html

  assets
  --img
  --js
  ----script.js
  --scss
  ----style.scss

在构建时,所有内容都会内置到/dist目录中。

我的Gruntfile包含(以及其他任务)以下内容:

useminPrepare: {
    options: {
        dest: '<%= yeoman.dist %>'
    },
    html: '<%= yeoman.dist %>/**.html',
    css: '<%= yeoman.app %>/assets/scss/**.scss'
}

usemin: {
    options: {
       dirs: ['<%= yeoman.dist %>']
    },
    html: '<%= yeoman.dist %>/**.html',
    css: '<%= yeoman.app %>/assets/css/style.css'
}

grunt.registerTask('build', [
    'clean:dist',
    'jekyll:dist',
    'spriteHD',
    'compassMultiple:dist',
    'useminPrepare',
    'concat',
    'uglify',
    'rev',
    'copy:dist',
    'svgmin',
    'imagemin:dist',
    'svg2png',
    'modernizr',
    'concurrent:replacementsDist',
    'usemin'
]);

HTML文件中要替换的块如下所示:

<!-- build:js /assets/js/lteie8.main.js -->
    <script src="//ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js"></script>
    <script src="/assets/bower_components/selectivizr/selectivizr.js"></script>
    <script src="/assets/bower_components/respond/dest/respond.src.js"></script>
<!-- endbuild -->

构建后,dist/index.html显示所有正确加速的文件名 - 用于css,js concat块和所有图像。但是,编译的CSS文件不包含revved文件引用。也不是在所有子目录index.html文件中,文件引用都会更新为加速版本。

在我使用**.html引用HTML文件时,我认为应该定位子目录中的所有html文件。我认为我在usemin或useminPrepare任务中有一些错误,是这种情况吗?

==编辑==

为了回应przno的回答,我将usemin:css:更改为<%= yeoman.dist %>/assets/css/*.css以使其正确编译CSS。

1 个答案:

答案 0 :(得分:0)

在我用**.html引用HTML文件时,我认为应该定位子目录中的所有html文件 - 使用**/*.html