如何为Grunt设置环境?

How to set the environment for Grunt?

我为两个环境定义了 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 知道哪个环境当前处于活动状态?

我建议您创建一个 development 任务,然后 运行 使用 grunt development

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

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

您可以有两个不同的 g运行t 文件,一个用于开发环境,一个用于生产环境(例如 gruntfile.dev.jsgruntfile.prod.js),并指定应将哪个文件视为相应文件grunfile 通过在你的 npm g运行t 命令中指定文件名,像这样

grunt --gruntfile gruntfile.prod.js

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

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

所以,输入 npm run build:prod prod g运行tfile 将是 运行 并且输入 npm run build:dev dev g运行tfile 将是 运行.

这样做,您将拥有更大的灵活性,并且更容易维护与您的 g运行t 配置相关的更改