我如何使Grunt.js imagemin跟踪*任何*文件夹,并可能将图像存储在一个地方



我对Grunt.js比较陌生,设置很容易,但现在我有2个问题:1)首先,如何在给定的源文件夹中跟踪任何文件夹?例如,images文件夹本身可能包含图像,以及包含图像的文件夹和包含图像的文件夹等。2)是否有一种方法来观察图像在它的主要(构建)文件夹?没有任何永久循环…

这是我当前的配置:

module.exports = function(grunt) {
grunt.initConfig({
    jsDir: 'sources/js/',
    jsDistDir: 'public/js/',
    cssDir: 'sources/css/',
    cssDistDir: 'public/css/',
    concat: {
        js: {
            src: ['<%=jsDir%>*.js'],
            dest: '<%=jsDistDir%>javascript.js'
        },
        css: {
            src: ['<%=cssDir%>*.css'],
            dest: '<%=cssDistDir%>styles.css'
        }
    },
    min: {
        dist: {
            src: ['<%= concat.js.dest %>'],
            dest: '<%=jsDistDir%>javascript.js'
        }
    },
    cssmin: {
        dist: {
            src: ['<%= concat.css.dest %>'],
            dest: '<%=cssDistDir%>styles.css'
        }
    },
    imagemin: {
        dynamic: {
            files: [{
                expand: true,
                cwd: 'sources/images/',
                src: ['**/*.{png,jpg,gif}'],
                dest: 'public/images/'
            }]
        }
    },
    watch: {
        min: {
            files: ['<%=jsDir%>*.js'],
            tasks: ['concat:js', 'min']
        },
        cssmin: {
            files: ['<%=cssDir%>*.css'],
            tasks: ['concat:css', 'cssmin']
        },
        imagemin: {
            files: ['sources/images/**/*.{png,jpg,gif}'],
            tasks: ['imagemin']
        }
    }
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-yui-compressor');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', [
    'concat',
    'min',
    'cssmin',
    'imagemin',
    'watch'
]);
};

谢谢!

问题1):

表达式**/*就是这样做的。(参见imagemin> dynamic> files> src)。在concat部分,你可以这样写src: ['<%=jsDir%>**/*.js'],

问题2):使用一个监视任务:

Install: npm install grunt-contrib-watch --save-dev

(--save-dev)表示将依赖项写入包。json文件)

在Gruntfile.js中的配置:

(function () {
    'use strict';
}());
module.exports = function(grunt) {
    require('load-grunt-tasks')(grunt);  // auto load grunt tasks
    var globalConfig = {
        jsPath: 'js/',
        cssPath: 'css/',
        scssPath: 'scss/',
    };
    grunt.initConfig({
        globalConfig: globalConfig,
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            // conf goes here
        },
        // your other tasks go here
        imagemin: {
            // conf goes here
        },
        watch: {
            dev:{
                files: ['<%= globalConfig.jsPath %>_*.js', '<%= globalConfig.scssPath %>**/*.scss'],
                tasks: ['concat','imagemin', 'yourothertasks']
            }
        }
    });
    grunt.registerTask('default', ['concat', 'imagemin', 'yourothertasks', 'watch:dev']);
};

最新更新