如何为Grunt设置环境?

时间:2015-04-01 12:57:13

标签: gruntjs config development-environment production-environment gruntfile

我为两个环境Gruntfile.jsdevelopment定义了production的任务部分。但我不明白,Grunt如何决定使用哪个环境部分。

Gruntfile.js

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    less: {
      development: {
        options: {
          paths: ["public/css"]
        },
        files: {
          "public/css/style.css": "public/css/style.less"
        }
      },
      production: {
        options: {
          paths: ["public/css"],
          plugins: [
          ],
          modifyVars: {
          }
        },
        files: {
          "public/css/style.css": "public/css/style.less"
        }
      }
    },
    watch: {
      css: {
        files: 'public/css/*.less',
        tasks: ['less'],
        options: {
          livereload: true,
        },
      },
    }
  });

  // Load the plugin that provides the "less" task.
  grunt.loadNpmTasks('grunt-contrib-less');
  // Load the plugin that provides the "watch" task.
  grunt.loadNpmTasks('grunt-contrib-watch');

  // Default task(s).
  grunt.registerTask('default', ['less', 'watch']);

};

如何让Grunt知道哪个环境目前处于活动状态?

2 个答案:

答案 0 :(得分:1)

要替代我建议您创建development任务并使用grunt development

运行它
// Default task(s).
grunt.registerTask('default', ['less:production', 'watch']);

// Development task
grunt.registerTask('development', ['less:development', 'watch']);

答案 1 :(得分:0)

您可以有两个不同的grunt文件,一个用于开发环境,另一个用于生产(例如gruntfile.dev.jsgruntfile.prod.js),并通过指定文件指定应将哪个文件视为对应的grunfile你的npm grunt命令中的名字如下

grunt --gruntfile gruntfile.prod.js

请记住,您可以为dev和prod grunt命令定义两个别名 见下文

"scripts": 
 {
    "build:prod": "grunt --gruntfile gruntfile.prod.js",
    "build:dev": "grunt --gruntfile gruntfile.dev.js",
 }

所以,通过键入npm run build:prod,将运行prod gruntfile,并输入npm run build:dev将运行dev gruntfile。

通过这样做,您可以获得更大的灵活性,并且更容易维护与您的grunt配置相关的更改