Gruntjs 如何为Grunt设置环境?

Gruntjs 如何为Grunt设置环境?,gruntjs,config,development-environment,production-environment,gruntfile,Gruntjs,Config,Development Environment,Production Environment,Gruntfile,我在grunfile.js中为两个环境定义了一个任务部分--开发和生产。但我不明白,格伦特是如何决定使用哪个环境部分的 grunfile.js module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), less: { development: { option

我在
grunfile.js
中为两个环境定义了一个任务部分--
开发
生产
。但我不明白,格伦特是如何决定使用哪个环境部分的

grunfile.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知道哪个环境当前处于活动状态?

若要选择,我建议您创建一个
开发
任务,并使用
Grunt开发

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

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

您可以有两个不同的grunt文件,一个用于开发环境,一个用于生产环境(例如
gruntfile.dev.js
gruntfile.prod.js
),并通过在npm grunt命令中指定文件名,指定应该将哪个文件视为对应的
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:prod
将运行prod gruntfile,通过键入
npm run build:dev
dev gruntfile将运行prod gruntfile


通过这样做,您可以更灵活地维护与grunt配置相关的更改

谢谢您的回答!它起作用了。是否也可以从单独的文件中获取环境信息?我的想法是将这些信息保存在一个无版本的文件中,这样就不必每次都考虑我当前执行命令的环境。如果有更少的调用(但可能每个模块都有可能,我没有测试),调用
grunt LESS:development
也可以工作。如果你知道,当它对每项任务都有效时,请随意用这些信息来扩展你的答案。嗨@automatix,这比问题的范围稍微超前了一点。我建议你用这些信息再问一个问题,我想其他人可能也会觉得有用。:)