【问题标题】:Grunt and Uglify, running more than one task?Grunt 和 Uglify,运行多个任务?
【发布时间】:2016-07-25 21:30:37
【问题描述】:

我有一个 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”之类的东西。但我不希望每次编辑/更新我的代码时都运行库和插件。但是能够以某种方式设置它以便我可以运行类似grunt uglify-libs 的东西。

这可行吗?

非常感谢

更新

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

我想将其更改为具有三个输出文件,一个用于库文件,一个用于插件,另一个是我编写的代码。

所以当我运行Grunt watch 时,它只会查看我的代码中的文件,而不是任何库或插件文件。

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

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

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

希望帮助解释更多。

非常感谢。

【问题讨论】:

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


    【解决方案1】:

    如果我没听错的话,你想使用一个 grunt-command 来启动多个任务。您可以通过创建一个“父”任务来做到这一点,它会像这样调用多个子任务:

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

    【讨论】:

    • 对不起,我解释得更多-我很不擅长问问题:(-我运行'grunt watch',现在它将我所有的JS文件放在一个文件中,但我想拆分文件向上,一个用于我所有的库、插件和我编写的代码。但我只希望我的 watch 命令在我的代码上运行,而不是连接/缩小库或插件文件。我在其他项目上,把文件溢出了,所以我知道这是可行的,但我只想让手表在我编写的代码上运行。但仍然可以运行类似“grunt uglify-libs”之类的东西,并且一个命令只会更新我的 libs 文件。
    • @C0ol_Cod3r 对不起,我就是不明白 :(
    • 我已经用更新来更新问题,希望能解释更多我希望能够做的事情
    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多