2014-01-29 3 views
2

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

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

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

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

ответ

2
  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']); 
    

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

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

    Так что теперь imagemin работает только для производства.

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

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

+0

Спасибо за ответ! Я знаю все о настройке отдельных задач dev/build для выполнения разных задач в разное время, но я просто не знал, как управлять разными путями файлов. Я рассмотрю вариант «cwd». Кроме того, я решил, что вам, вероятно, придется иметь узел узла, но мне было просто любопытно, если я упустил что-то очевидное. Еще раз спасибо! – cmegown

Смежные вопросы