我正在尝试编写一个gradle任务,它将缩小我所有项目的javascript文件。我使用的是gradle库:smith,joe j. --->joe (need result as)
smith,alan ---->alan (need result as)
。该库包含一个名为com.eriwen.gradle.js
的任务,我们在其中定义要缩小的源文件和缩小文件的目标:
minifyJs
我想要做的是为我的项目中的每个javascript文件调用执行此任务,并在EACH文件的新路径中生成它的缩小版本。这需要我每次多次运行minifyJs {
source = file(sourcePathString)
dest = file(targetPathString)
}
任务,使用不同的minifyJs
和source
值,但我似乎找不到如何执行此操作的解决方案。有人建议我们使用循环为每个javascript文件创建dest
的新任务,但这需要花费大量时间,并且会创建250多个任务,即完全无效。
由于在另一个任务中调用任务不起作用(使用type: minifyJs
是不好的做法)我基本上寻找一种可以实现此目的的解决方法:
task.execute()
由于我们无法在另一项任务中调用task customMinify {
def jsFileTree = fileTree('my/javascript/files')
jsFileTree.forEach {
def jsFile = it
minifyJs {
source = file(jsFile.getPath())
dest = file('new/path/to/file.js')
}
}
}
,因此显然无法正常工作。
答案 0 :(得分:1)
我很遗憾 gradle-js-plugin 中存在这种差距。
由于生成任务不起作用,我建议您buildSrc
buildSrc/src/main/groovy/com/eriwen/gradle/js/tasks
下write a custom task和JsMinifier。{/ p>
如果您愿意等待8个小时左右,如果您愿意,我可以稍后再写一个实现。
编辑:这是MinifyJsTask你可以投入repositories {
mavenCentral()
}
dependencies {
compile localGroovy()
compile gradleApi()
compile ('com.google.javascript:closure-compiler:v20151015') {
exclude module: 'junit'
}
}
并且它会单独缩小每个文件并生成单独的源地图文件等。
buildSrc /的build.gradle:
task mini(type: com.foo.bar.ClosureMinifyTask) {
source = "src/js"
dest = "${buildDir}/js/minified"
}
样本用法:
-tab1.php
-tab2.php
-/js/functions.js