JavaScript と CSS の minify

久々G*関連ネタ。

tree-tips: Gradleでjavascriptをminifyする! | Gradle
tree-tips: Gradleでcssをminifyする! | Gradle

上記サイトのビルドスクリプトを参考に、カレントディレクトリ以下の JavaScriptCSS再帰的に minify するようにした。

ただ、使っているプラグインが新しめの gradle に対応してないっぽくて、ちょっとはまった。
結局 1.7 です。

wrapper 作ったので、ついでにチームの人に紹介しておいた。

defaultTasks 'allMinifyCss', 'allMinifyJs'

apply plugin: 'js'
apply plugin: 'css'

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.eriwen:gradle-js-plugin:1.5.0'
    classpath 'com.eriwen:gradle-css-plugin:1.2.1'
  }
}

css.source {
  dev {
    css {
      srcDir "./"
        include "**/*.css"
        exclude "**/*.min.*"
    }
  }
}

css.source.dev.css.files.eachWithIndex { cssFile, i ->
  tasks.create(name: "minifyCss${i}", type: com.eriwen.gradle.css.tasks.MinifyCssTask) {
    source = cssFile
    dest = cssFile.getAbsolutePath().replace('.css','.min.css').replace('.js', '.min.js')
    yuicompressor {
      lineBreakPos = -1
    }
  }
}

task allMinifyCss(dependsOn: tasks.matching { Task task ->
    task.name.startsWith("minifyCss")
  }
)

javascript.source {
  dev {
    js {
      srcDir "./"
        include "**/*.js"
        exclude "**/*.min.js"
    }
  }
}

javascript.source.dev.js.files.eachWithIndex { jsFile, i ->
  tasks.create(name: "minifyJs${i}", type: com.eriwen.gradle.js.tasks.MinifyJsTask) {
    source = jsFile
    dest = jsFile.getAbsolutePath().replace('.js', '.min.js')
  }
}
task allMinifyJs(dependsOn: tasks.matching { Task task ->
    task.name.startsWith("minifyJs")
  }
)

task wrapper(type: Wrapper) {
  gradleVersion = 1.7
}