2013-08-27 4 views
1

Я ищу grunt-string-replace для выполнения переменных переменных в моих файлах для переменной среды. Однако, когда я пытаюсь запустить скрипт grunt ниже, я получаю следующее предупреждение: «Задача min: dev not found». Но в этом коде у меня есть то, что определено:Использование Grunt для установки переменных, основанных на среде

module.exports = function (grunt) { 
    // Project configuration. 
    grunt.initConfig({ 
     min: { 
      dev: { 
       "string-replace": { 
        dist: { 
         files: { 
          "/newrelic.js": "/newrelic.js" 
         }, 
         options: { 
          replacements: [ 
           { 
            pattern: /$APPNAME/ig, 
            replacement: "services" 
           }, 
           { 
            pattern: /$ENV/ig, 
            replacement: "nonprod" 
           } 
          ] 
         } 
        } 
       } 
      }, 
      prod: { 
       pkg: grunt.file.readJSON('package.json'), 
       uglify: { 
        options: { 
         banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' 
        }, 
        build: { 
         src: 'src/<%= pkg.name %>.js', 
         dest: 'build/<%= pkg.name %>.min.js' 
        } 
       } 
      } 
     } 
    }); 

// Load the plugin that provides the "uglify" task. 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-string-replace'); 

// Default task(s). 
    grunt.registerTask('default', ['min:dev']); 
    grunt.registerTask('prod', ['min:prod']); 

}; 

Я что-то пропустил?

ответ

1

Вы прочитали инструкцию? В getting started guide указано, что задачи ожидают, что их конфигурация будет , указанной в объекте с таким же именем. У вас не определено задание «мин», поэтому это ошибка.

Ключи верхнего уровня объекта конфигурации должны соответствовать именам задач, а затем определять «цели» (например, «dev» или «prod») в конфигурации задачи.

Итак, вот ваш Gruntfile переработан. Я не проверял это, так что я не могу обещать, что будет работать, но это, безусловно, приведет вас в правильном направлении:

module.exports = function (grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     "string-replace": {     
      dev: { 
       files: { 
        "/newrelic.js": "/newrelic.js" 
       }, 
       options: { 
        replacements: [{ 
         pattern: /$APPNAME/ig, 
         replacement: "services" 
        }, { 
         pattern: /$ENV/ig, 
         replacement: "nonprod" 
        }] 
       } 
      } 
     }, 
     uglify: { 
      prod: { 
       options: { 
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' 
       }, 
       build: { 
        src: 'src/<%= pkg.name %>.js', 
        dest: 'build/<%= pkg.name %>.min.js' 
       } 
      } 
     } 
    }); 

    // Load the plugin that provides the "uglify" task. 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-string-replace'); 

    // Default task(s). 
    grunt.registerTask('default', ['string-replace:dev']); 
    grunt.registerTask('prod', ['uglify:prod']); 
}; 
+0

Да, я сделал, но я смотрел на это что-то более конкретное к моему прецеденту: HTTP : //stackoverflow.com/questions/13800205/alternate-grunt-js-tasks-for-dev-prod-environments. Как это работает, а затем 15 раз? – occasl

+0

Автор в этой теме упоминает, что использует min * task *. Вы не используете минимальную задачу. – badsyntax

1

думает вы пытаетесь это сделать, этот фрагмент поставит переменные окружения SOME_ENV, в хрюканье конфигурация, то замените просто дает вам простой способ сделать $ {SOME_ENV} заполнителей в файлах для замены

module.exports = function(grunt) { 
    // Project configuration. 
    grunt.initConfig({ 
     pkg : grunt.file.readJSON('package.json'), 
     SOME_ENV: process.env.SOME_ENV, 
     copy: { 
      files: [ 
       {expand: true, cwd: "src/", src: ["*.*", "**/*.*"], dest: "./build",} 
      ], 
      options: { 
      // Replace ${MEH} in files with grunt.config.get("MEH"), 
      // eg ${SOME_ENV} 
      // == grunt.config.get("SOME_ENV") 
      // == process.env.SOME_ENV == systems SOME_ENV environment var 
       process: function (content, srcpath) { 
        return content.replace(
         /\$\{([a-zA-Z.]+)\}/g, 
         function replacer(match, p1, offset, string){ 
          var value = grunt.config.get(p1); 
          grunt.log.write(" in file '" + srcpath + "'\n replacing '" + match + "'\n with '" + value + "'\n"); 
          return value; 
         }); 
        } 
      }, 
     } 
    }); 

    // Production Build Tools 
    grunt.loadNpmTasks('grunt-contrib-copy'); 

    // Default Production Build task(s). 
    grunt.registerTask('default', ['copy']); 
}; 
Смежные вопросы