- SASS(SCSS) を利用したい。
- GradleのNode plugin を利用してきたけれど、メンテナンスをしたくない。
- プロジェクトの構造によって、出力先の指定や対象の指定が面倒。
- SASS(SCSS) を利用するだけなのに、Nodeのプラグインを利用するための準備をする時間が惜しい。
- コンパイル前のディレクトリ構造と同じ形で出力をしたい。
- AutoPrefixer も使いたいけれど、デプロイするときだけでOK。
- min化するのも、デプロイするときだけで良い。
- min化するのに、プラグインは1つだけで良い。
- 複数のSASSファイルを別ディレクトリで管理をしたい
- 例えば、
src/vendor/scss
とsrc/main/sass
の2フォルダのファイルを、1ディレクトリ or 別ディレクトリにコンパイルしたい などなど...
- 例えば、
https://plugins.gradle.org/plugin/com.matsuyoido.frontend にアクセスして、pluginをもらってきてください。
利用するシーンに合わせて、以下の設定をしてみてください。
frontend {
style {
scss {
inDir = file("$projectDir/src/main/sass")
outDir = file("$projectDir/src/main/resources/static/css")
}
}
}
$ gradlew sassCompile
frontend {
style {
scss {
inDir = file("$rootDir/src/vendor")
outDir = file("$projectDir/src/main/resources/static/vendor)
}
scss {
inDir = file("$rootDir/src/sass")
outDir = file("$projectDir/src/main/resources/static/css")
}
}
}
※scss のブロックは複数設定が可能
$ gradlew sassCompile
frontend {
setting {
prefixer {
// (ダウンロード可能 & 最新でOKであれば、最新のファイルをダウンロードするため、指定不要)
// caniuseData = file("$rootDir/caniuse/data.json")
// サポートするためのバージョンを指定する(全部対象にする場合は、 all を使う)
ie = ""
edge = ""
chrome = ""
firefox = ""
safari = ""
ios = ""
android = ""
}
}
style {
scss {
inDir = file("$projectDir/src/main/sass")
outDir = file("$projectDir/src/main/resources/static/css")
enableMinify = true
addPrefixer = true
}
}
}
$ gradlew sassCompile
frontend {
style {
scss {
inDir = file("$projectDir/src/main/sass")
outDir = file("$rootDir/temp/check/${project.name}")
}
css {
inDir = file("$rootDir/temp/check/${project.name}")
outDir = file("$projectDir/src/main/resources/static/css")
}
}
}
$ gradlew sassCompile cssMinify
frontend {
style {
css {
inDir = file("$projectDir/src/main/resources/static/css")
outDir = file("$projectDir/src/main/resources/static/css")
}
}
script {
js {
inDir = file("$projectDir/src/main/resources/static/js")
outDir = file("$projectDir/src/main/resources/static/js")
}
}
}
$ gradlew cssMinify jsMinify
frontend {
style {
js {
inDir = file("$projectDir/src/main/js")
outDir = file("$projectDir/src/main/resources/static/js")
}
}
}
※mapファイルの中でも最小限だけの構成でOK。
.js.map の例
{
"sources": ["your/specified/include/js/file/path.js", "./../relative/js/path.js"]
}
$ gradlew jsMerge