Gradle缩小所有JavaScript [英] Gradle minify all javascript

查看:189
本文介绍了Gradle缩小所有JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试缩小我应用中的所有js文件.我正在使用 gradle-js-plugin .我能够使用它来缩小单个文件.但我希望将所有js文件缩小.这是我尝试过的.最终看起来可能很愚蠢,但是我刚开始使用 Gradle 写东西.

I'm trying to minify all js files in my app. I was using gradle-js-plugin. I was able to minify a single file using that. But I want my all js files to be minified. Here is what i tried. It may seem very dumb in the end, but I'm new to writing something with Gradle.

plugins {
id "com.eriwen.gradle.js" version "2.12.0"
}

task minifyAll << {

FileTree tree = fileTree('src/main/webapp/resourcesMinified') {
    include '**/*.js'
    exclude '**/*.css'
    exclude '**/*.less'
    exclude '**/*.sass'
}

tree.each { file ->
    def path = file.path

  minifyJs {
   println path
   source = path
   dest = path
   closure {
    warningLevel = 'QUIET'
   }
 }
}

问题是我无法从minifyAll内部调用minifyJs任务.我尝试了几件事,包括execute.

Problem is I can not invoke minifyJs task from inside minifyAll. I tried several things including execute.

推荐答案

现在为每个JS文件生成一个最小化的文件

now produces a minimized file for each JS file

我正在将Gradle 2.12与src/main/webapp/resources

I'm using Gradle 2.12 with several JS files in src/main/webapp/resources

给出此build.gradle文件:

plugins {
    id "com.eriwen.gradle.js" version "2.12.0"
}

import com.eriwen.gradle.js.tasks.MinifyJsTask

def srcDir = "src/main/webapp/resources"
def dynamicTaskNames = []
def dynamicTaskIndex = 1

new File(srcDir).eachFile { def file ->
    def dynamicTaskName = "taskMinify${dynamicTaskIndex}"

    task "${dynamicTaskName}"(type: MinifyJsTask) {
        source = file.absolutePath
        dest = "${buildDir}/min.${file.name}"
        closure { warningLevel = 'QUIET' }
    }

    dynamicTaskNames << dynamicTaskName
    dynamicTaskIndex++    
}

task myMinify(dependsOn: dynamicTaskNames) << {
    println ("done.")
}

以下对我有用:

$ gradle myMinify

myMinify任务依赖于几个动态任务,这些任务为每个文件执行minifyJs任务.例如StringUtils.js将生成build/min.StringUtils.js.

The myMinify task has dependencies on several, dynamic tasks which perform the minifyJs task for each file. e.g. StringUtils.js will generate build/min.StringUtils.js.

在考虑Gradle时,我使用 ICE 规则:初始化阶段,配置阶段,执行阶段.在这种情况下,动态任务是在配置阶段定义的(即,在任务定义之外自由浮动的代码).在执行阶段,myMinify调用其依赖项,在该依赖项中执行工作.

I use the ICE rule when thinking about Gradle: Initialization phase, Configuration phase, Execution phase. In this case, the dynamic tasks are defined during the Configuration phase (i.e. the code that floats freely outside of a task definition). During the Execution phase, myMinify calls its dependencies, where the work is performed.

这篇关于Gradle缩小所有JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆