4

Gruntfile.js为两个环境定义了我的任务部分 -developmentproduction. 但我不明白,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 知道当前处于活动状态的是哪个环境?

4

2 回答 2

2

为了交替,我建议你创建一个development任务并运行它grunt development

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

// Development task
grunt.registerTask('development', ['less:development', 'watch']);
于 2015-04-01T14:48:16.983 回答
0

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

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:prodprod gruntfile 将运行,输入npm run build:devdev gruntfile 将运行。

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

于 2018-03-29T14:52:17.283 回答