Gradle缩小所有JavaScript [英] Gradle minify all 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屋!