gpt4 book ai didi

javascript - 使用不同的参数多次运行 gradle 任务

转载 作者:行者123 更新时间:2023-11-27 23:35:15 24 4
gpt4 key购买 nike

我正在尝试编写一个 gradle 任务,它将缩小我项目的所有 javascript 文件。我正在使用 gradle 库:com.eriwen.gradle.js。该库包含一个名为 minifyJs 的任务,我们在其中定义要缩小的源文件以及缩小文件的目标:

minifyJs {
source = file(sourcePathString)
dest = file(targetPathString)
}

我想要做的是为我的项目中的每个 javascript 文件调用执行此任务,并在每个文件的新路径中生成它的缩小版本。这需要我每次使用不同的 sourcedest 值多次运行 minifyJs 任务,但我似乎找不到有关如何执行此操作的解决方案。有人建议我们使用循环为每个 javascript 文件创建一个 type: minifyJs 的新任务,但这需要大量时间,并且会创建 250 多个任务,即根本无效。

由于在另一个任务中调用一个任务不起作用(并且使用 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')
}
}
}

这显然不起作用,因为我们无法在另一个任务中调用 minifyJs

最佳答案

我真的很抱歉,这个差距在 gradle-js-plugin 中继续存在。

既然生成任务不行,我建议你write a custom taskbuildSrc 下结合我的 JsMinifierMinifyJsTask .

如果您愿意等待 8 小时左右,如果您愿意,我可以稍后编写此实现。

编辑:这是一个 gist for a ClosureMinifyTask您可以放入 buildSrc/src/main/groovy/com/eriwen/gradle/js/tasks ,它会单独缩小每个文件并生成单独的源映射文件等。

buildSrc/build.gradle:

repositories {
mavenCentral()
}

dependencies {
compile localGroovy()
compile gradleApi()
compile ('com.google.javascript:closure-compiler:v20151015') {
exclude module: 'junit'
}
}

示例用法:

task mini(type: com.foo.bar.ClosureMinifyTask) {
source = "src/js"
dest = "${buildDir}/js/minified"
}

关于javascript - 使用不同的参数多次运行 gradle 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com