Grunt.js DEV vs PROD задачи

Только начал изучать Grunt (а также альтернативу - gulp.js), и я впадаю в некоторую путаницу, которую, кажется, не могу понять сам. Я понимаю, как вы можете определять разные задачи для разных сред, чтобы быть эффективными и повышать производительность, но я застрял в том, как именно можно использовать эти два типа задач.

Вопрос 1: Допустим, у меня есть images каталог, в котором я не хочу запускать grunt-contrib-imagemin во время разработки, но хочу запустить его во время производства, чтобы «обработанные» изображения находились в images/build. Как мне учесть это в моих путях к файлам? Есть ли способ это автоматизировать?

Вопрос 2: Я не разработчик и у меня мало опыта работы с какой-либо конфигурацией сервера, поэтому меня путают, когда люди говорят «запустить grunt build на своем сервере». Где бы это могло произойти? Возможно ли это даже на дешевом общем хосте, таком как iPage?

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


person cmegown    schedule 29.01.2014    source источник


Ответы (1)


  1. Вам нужно указать разные задачи для разработки и производства. Что-то вроде

    grunt.initConfig({
        imagemin: {
            dev: {
              // dev server minify config
            },
            prod: {
              // production server minify config
            }
        },
        devtask: {
            //Some task for development mode
        }
    });
    
    grunt.loadNpmTasks('grunt-contrib-imagemin');
    grunt.loadNpmTasks('devtask');
    
    grunt.registerTask('default', ['devtask']);
    grunt.registerTask('dev', ['devtask']);
    grunt.registerTask('prod', ['imagemin:prod']);
    

    Теперь, если вы введете «grunt dev» в терминал, grunt запустит только «devtask». Просто «grunt» запустит задачи, перечисленные в «default», что аналогично «grunt dev».

    Если вы введете «grunt prod», grunt запустит цель prod задачи imagemin.

    Итак, теперь imagemin работает только в производственной среде.

    Поработайте со свойствами 'src' и 'dest' задачи imagemin, чтобы получить результат в 'images / build'. Вы можете указать свойство cwd, чтобы указать пути к файлам.

  2. Чтобы делать это на стороне сервера, вам понадобится NodeJS. Некоторые веб-хостинговые компании предлагают это. Вам нужно будет уточнить у себя. Обычно я просто делаю шаг на своей машине разработки, а затем передаю выходные файлы на сервер через ftp. Этот шаг также можно выполнить с помощью grunt через многие из доступных подключаемых модулей ftp grunt.

person blessenm    schedule 29.01.2014
comment
Спасибо за ответы! Я знаю все о настройке отдельных задач разработки / сборки для выполнения разных задач в разное время, но я просто не знал, как управлять разными путями к файлам. Я посмотрю на вариант «cwd». Кроме того, я подумал, что вам, вероятно, понадобится хост Node, но мне было просто любопытно, не упустил ли я что-то очевидное. Спасибо еще раз! - person cmegown; 29.01.2014