Как включить изображения в сборку с помощью Grunt?

Следующий скрипт правильно объединяет и минифицирует css и js.

Мне нужно скопировать в мой каталог сборки некоторые папки и их файлы, а также некоторые другие файлы из корня (без минимизации или конкатенации). Примером могут служить папка icons (включая подпапки, если это возможно), images и config.xml в корне.

Любая идея, как изменить сценарий?


   module.exports = function (grunt) {

        // project configuration
        grunt.initConfig({
            pkg: grunt.file.readJSON('package.json'),
            uglify: {
                options: {
                    banner: '/* App: <%= pkg.name %> - Version: <%= pkg.version %> - Date: <%= grunt.template.today("dd-mm-yyyy") %> - Author: <%= pkg.author %> */\n\n'
                }
            },
            cssmin: {
                options: {
                    banner: '/* App: <%= pkg.name %> - Version: <%= pkg.version %> - Date: <%= grunt.template.today("dd-mm-yyyy") %> - Author: <%= pkg.author %> */\n'
                }
            },
            useminPrepare: {
                html: 'index.html',
                options: {
                    dest: 'build'
                }
            },
            usemin: { html: ['build/index.html'] },
            copy: {
                task0: {
                    src: 'index.html',
                    dest: 'build/index.html'
                }
            }
        });

        // load required modules
        grunt.loadNpmTasks('grunt-contrib-copy');
        grunt.loadNpmTasks('grunt-contrib-concat');
        grunt.loadNpmTasks('grunt-contrib-cssmin');
        grunt.loadNpmTasks('grunt-contrib-uglify');
        grunt.loadNpmTasks('grunt-usemin');

        // task definitions
        grunt.registerTask('build', [
          'copy:task0',
          'useminPrepare',
          'concat',
          'cssmin',
          'uglify',
          'usemin'
        ]);
    };

person GibboK    schedule 13.08.2014    source источник


Ответы (1)


Я решил свою проблему, используя следующий скрипт. Хитрость заключалась в том, чтобы добавить несколько задач к объекту copy

        task1: {
            expand: true,
            src: ['icons/**'],
            dest: 'build/'
        },

module.exports = function (grunt) {

    // project configuration
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                banner: '/* App: <%= pkg.name %> - Date: <%= grunt.template.today("dd-mm-yyyy") %> - Author: <%= pkg.author %> */\n\n'
            }
        },
        cssmin: {
            options: {
                banner: '/* App: <%= pkg.name %> - Date: <%= grunt.template.today("dd-mm-yyyy") %> - Author: <%= pkg.author %> */\n'
            }
        },
        useminPrepare: {
            html: 'index.html',
            options: {
                dest: 'build'
            }
        },
        usemin: { html: ['build/index.html'] },
        copy: {
            task0: {
                src: 'index.html',
                dest: 'build/index.html'
            },
            task1: {
                expand: true,
                src: ['icons/**'],
                dest: 'build/'
            },
            task2: {
                expand: true,
                src: ['img/**'],
                dest: 'build/'
            },
            task3: {
                src: 'config.xml',
                dest: 'build/'
            },
            task4: {
                src: 'widget.info',
                dest: 'build/'
            },
            task5: {
                src: 'config.js',
                dest: 'build/'
            },
        },
        clean: {
            build: {
                src: [".tmp"]
            }
        }
        });

    // load required modules
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-usemin');
    grunt.loadNpmTasks('grunt-contrib-clean');

    // task definitions
    grunt.registerTask('build', [
      'copy:task0',     
      'copy:task1',     
      'copy:task2',     
      'copy:task3',     
      'copy:task4',    
      'copy:task5',     
      'useminPrepare', 
      'concat',
      'cssmin',
      'uglify',
      'usemin',         // build
      'clean'           // clean temp folders
    ]);
};

Полезные ресурсы, которые мне помогают:

https://www.youtube.com/watch?v=gIbfDxF69c8

grunt-contrib-build" отсутствует в реестре npm

Как установить grunt и как создать скрипт с помощью это

https://github.com/gruntjs/grunt-contrib-copy

person GibboK    schedule 14.08.2014