0

我有一个文件夹,里面有很多目录。我想要一个 gradle 脚本,它将遍历它们(而不是递归地)并运行

 yarn build 

在他们中。

我尝试了两种方法(并开始了几种不同的事情),但可惜没有运气。

task build (description: "Loops through folders and builds"){
    FileTree tree = fileTree(dir: 'admin', include: '*/package.json')

    tree.each {File file -> println file}

}

task yarnBuild (type: Exec){
    executable "bash"
    args "find . -type d -exec ls {} \\;"
}

通过任务构建,我想找到包含 package.json 的目录(实际上是所有目录),但是我不知道如何更改为该目录来进行“纱线构建”

对于 yarnBuild 任务,我只想使用 unix 命令来完成。但我也无法让它工作。

我会对使用实际的 Gradle 找到更符合“构建”任务的解决方案更感兴趣。有人可以给我一些指示吗?如何更改到这些目录?我猜一旦我在正确的文件夹中,我就可以使用 Exec 来运行“yarn build”。

谢谢!

4

1 回答 1

0

我可能会为每个目录创建一个任务并将它们全部连接到DAG

apply plugn: 'base'
FileTree directories = fileTree(projectDir).matching {
    include { FileTreeElement el ->
       return el.directory && el.file.parentFile == projectDir
    }
}
directories.files.each { File dir ->
    // create a task for the directory
    Task yarnTask = tasks.create("yarn${dir.name}", Exec) {
        workingDir dir
        commandLine 'yarn', 'build'

        // TODO: set these so gradle's up-to-date checks can work
        inputs.dir = ???
        outputs.dir = ???
    }
    // wire the task into the DAG
    build.dependsOn yarnTask
}
于 2017-02-04T19:01:36.553 回答