Grunt和Uglify,执行多项任务?

时间:2016-07-25 21:30:38

标签: javascript gruntjs grunt-contrib-watch grunt-contrib-uglify

我有一个如下的Grunt文件,

module.exports = function(grunt) {
grunt.initConfig({
 pkg: grunt.file.readJSON('package.json'),

 'uglify': {
    options: {
        preserveComments: 'some',
    },
    my_target: {
      files: {
        'site/assets/js/js_code.js': [
            /* Libs */
            '/js/libs/jquery_2.2.4.min.js',
            '/js/libs/underscore_1.8.3.min.js',
            '/js/libs/backbone_1.3.3.min.js',

            /* Plugins */
            '/js/plugins/dropzone.min.js',
            '/js/plugins/jquery.magnific-popup.min.js',
            '/js/plugins/jquery.validate.min.js',

            /* Build JS Functions */
            '/js/functions.js',
            '/js/builder.js',

        ]
      }
    }
 }, 

 'sass': {
    dist: {
      options: {
        style: 'expanded',  
        compass: true,
      }, 
      files: {
        'assets/css/styles.css': '/scss/styles.scss',
      } //End of Files
    } //End of Dist.
 }, //End of SASS

 watch: {
  'JS': {
    files: ['/js/*.js'],
    tasks: ['uglify'],
    options: { spawn: false },
  },
 'Scss': {
    files: ['/scss/*.scss'],
    tasks: ['sass'],
    options: { spawn: false },
  } 
}
});

grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
};

我无法解决的问题,我做了很多研究,但似乎无法找到答案,是如何设置uglify来完成多项任务。

我知道我可以设置多个文件目标,但我不希望我的手表运行这些。所以我想设置一个'libs.js','plugins.js'和'my_code.js'之类的东西。但是我不希望每次编辑/更新代码时都运行lib和插件。但是能够以某种方式设置它以便我可以运行grunt uglify-libs之类的东西。

可行吗?

非常感谢

更新

根据下面的评论,我试着更详细地解释一下。 现在,我运行grunt watch,返回一个输出文件。

我想将此更改为三个输出文件,一个用于libs文件,一个用于插件,另一个用于我编写的代码。

因此,当我运行Grunt watch时,它只会查看我的代码中的文件,而不会查看任何lib或插件文件。

然后我希望能够运行Grunt uglify-libs,然后这将生成libs文件。

插件也是如此,但类似于Grunt uglify-plugs

所以基本上我想要三个升级任务,但只有一个在watch函数中运行。

希望有助于解释更多。

非常感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解你,你想使用一个grunt命令来启动多个任务。你可以通过创建一个父母"任务,他们调用多个子任务,如下所示:

  grunt.registerTask('uglify-libs', ['sass', 'uglify']);