Javascript 如何制作';咕噜声少';自动运行自动刷新器?

Javascript 如何制作';咕噜声少';自动运行自动刷新器?,javascript,less,gruntjs,vendor-prefix,Javascript,Less,Gruntjs,Vendor Prefix,我有一个工作Gruntfile与较少和自动refixer。我也有“咕噜手表”工作良好 在使用autoprefixer之前,我对供应商前缀使用较少的混音。运行“grunt less”将构建带有所有前缀的工作CSS 现在我有了autoprefixer,但如果我想一次性构建我的样式,我现在必须运行“grunt less”,然后运行“grunt autoprefixer”,以获得带有前缀的工作CSS 如何修改“grunt less”使其构建工作正常,前缀再次减少 。然而: “grunt less”现在

我有一个工作Gruntfile与较少和自动refixer。我也有“咕噜手表”工作良好

在使用autoprefixer之前,我对供应商前缀使用较少的混音。运行“grunt less”将构建带有所有前缀的工作CSS

现在我有了autoprefixer,但如果我想一次性构建我的样式,我现在必须运行“grunt less”,然后运行“grunt autoprefixer”,以获得带有前缀的工作CSS

如何修改“grunt less”使其构建工作正常,前缀再次减少

。然而:

  • “grunt less”现在没有可用的输出。任务应始终产生可用的输出
  • 我不想告诉其他人“无咕噜”不会产生可用的输出
  • 不需要额外的任务来替换不起作用的任务
也就是说,我只想让grunt less生成可工作的CSS(带前缀)

module.exports = function(grunt) {

  // Load Grunt tasks declared in the package.json file
  require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

  // Configure Grunt
  grunt.initConfig({

    less: {
      development: {
        options: {
          paths: ["./less"],
          yuicompress: false
        },
        files: {
          "./public/css/style.css": "./public/less/style.less"
        }
      }
    },

    autoprefixer: {
      development: {
        browsers: ['last 2 version', 'ie 9'],
        expand: true,
        flatten: true,
        src: 'public/css/*.css',
        dest: 'public/css'
      }
    },

    watch: {
      less: {
        files: ["./public/less/*"],
        tasks: ["less", "autoprefixer:development"],
        options: {
          livereload: true
        }
      }
    },

  });


};

Grunt不能做你在问题中描述的事情,因为任务之间并不天生就相互了解。您必须使用别名(easy)或函数(当您需要更多控制时)将任务粘合在一起,但如果不更改源,则无法修改其中一个任务的行为方式

例如,您可以少使用fork-grunt-contrib,并添加代码以直接在任务中运行自动前缀,如下:-在此处插入此行,然后使用fork而不是官方插件

最简单也是最好的方法是注册一个新任务,该任务在一个命令中完成这两个任务的工作,即:

grunt.registerTask('buildless', ['less', 'autoprefixer']);
我对自己的所有任务都这样做——SASS编译、JS concat+uglify、webfont生成等。只需告诉团队中的其他人运行这些任务,而不是自己运行
grunt less
grunt autoprefixer


更好的是,有了这个(和过滤器配置),每当有人运行
grunt availabletasks
时,您将能够生成一个任务的精简列表,尽管我更喜欢将其与
任务
别名,以便更快地键入。如果你和我一样,也被自动化错误所困扰(并且在Grunfile中注册了大量插件),这确实可以帮助项目的新成员运行任务。

要将autoprefixer用作插件,你必须安装npm包少插件autoprefix

npm install grunt-contrib-less less-plugin-autoprefix --save-dev
grunfile.js

module.exports = function(grunt) {
  "use strict";
  var gruntConfig = {
    less : {
      options : {
        plugins : [ new (require('less-plugin-autoprefix'))({browsers : [ "last 2 versions" ]}) ]
      },
      main : {
        files: {
          'src/css/desktop/bootstrap-theme.css' : 'src/less/desktop/bootstrap-theme.less',
          'src/css/desktop/company.css' : 'src/less/desktop/company.less',
          'src/css/desktop/index.css' : 'src/less/desktop/index.less',
          'src/css/desktop/login.css' : 'src/less/desktop/login.less'
        }
      }
    }
  };

  grunt.initConfig(gruntConfig);
  grunt.loadNpmTasks('grunt-contrib-less');
  grunt.registerTask('default', [ 'less' ]);
};

感谢您的回答,但正如问题中提到的,我特别不想添加其他任务。Grunt任务不知道其他Grunt任务,您必须编写一个自定义任务函数,该函数可以为less和autoprefixer任务设置属性,然后只有一个配置块(不推荐,至少需要几个小时)。alias任务的全部目的是为您解决此问题,这是最简单也是最好的方法。我不确定您为什么如此反对此操作,但这只是Grunt的工作原理。“我不确定您为什么如此反对此操作”-我不想再做另一项任务的原因就在问题的要点中。那么唯一的答案就是少用fork-grunt-contrib并添加代码直接在任务中运行自动前缀,在这里:-在这里插入这一行,然后使用fork而不是官方插件。或者使用Gulp,它的配置风格比n Grunt--但不在这个问题的范围之内。好吧,我已经这样做了。我提到了Gulp,它仍处于开发的早期阶段,但配置更接近你提到的:在Gulp中,你只需要注册一个任务来做更少的事,自动刷新等等-没有配置,只有代码。但是那些插件还没有编写,所以它是现在还不是一个替代品。这是有效的-但是你需要grunt contrib小于1.0.0或更高版本以获得更少的插件。这是一个很好的概述。