[Grunt & Yeoman] grunt-contrib-compass で Compass のコンパイルと監視を行う
grunt を利用して、Compass を実行する環境を作っていきます。
Contents
config.rb
compass で利用している config.rb を設定を、そのまま活かして組み込みます。
css_dir = "src/stylesheets"
sass_dir = "src/sass"
images_dir = "src/images"
javascripts_dir = "src/javascripts"
output_style = (environment == :production) ? :compressed : :expanded
relative_assets = true
line_comments = (environment == :production) ? :false : :true
% compass init
directory src/sass/
directory src/stylesheets/
create src/sass/screen.scss
create src/sass/print.scss
create src/sass/ie.scss
create src/stylesheets/ie.css
create src/stylesheets/print.css
create src/stylesheets/screen.css
*********************************************************************
Congratulations! Your compass project has been created.
:
src
├── sample.html
├── sass
│ ├── ie.scss
│ ├── print.scss
│ └── screen.scss
├── stylesheets
│ ├── ie.css
│ ├── print.css
│ └── screen.css
└── vendor
ここまではいつも通りです。
インストール
% npm install grunt-contrib-compass --save-dev
% npm install grunt-contrib-watch --save-dev
もしくは
% npm install grunt-contrib --save-dev
Gruntfile
config.rb を読み込んで、環境設定を指定するには、こんな書き方になります。
config.rb の設定を上書きしたり、使わずに表現することもできます。
cssDir: '<%= dir.dest %>/stylesheets'
上記のように production のみコンパイルされたcssを別のディレクトリに書き出すよう、設定を追加してみます。
'use strict'
module.exports = (grunt) ->
grunt.loadNpmTasks('grunt-contrib');
# グラントタスクの設定
grunt.initConfig
# config
dir:
src: 'src'
dest: 'dist'
pkg: grunt.file.readJSON "package.json"
compass:
dev:
options:
config: 'config.rb'
environment: 'development'
force: true
prod:
options:
config: 'config.rb'
environment: 'production'
force: true
cssDir: '<%= dir.dest %>/stylesheets'
# watchの設定
watch:
files: ['<%= dir.src %>/sass/*.scss']
tasks: ['compass:dev']
# タスクコマンドの設定
grunt.registerTask 'default', ['compass']
監視には watch を利用します。
対象ファイルとタスクを指定します。
実行する
監視を始めます。
compass watch を始めることになりますね。
% grunt watch
Running "watch" task
Waiting...OK
ファイルを追加すると、コンパイルが完了しました。
>> File "src/sass/style.scss" added.
Running "compass:dev" (compass) task
overwrite src/stylesheets/ie.css (0.082s)
overwrite src/stylesheets/print.css (0.02s)
overwrite src/stylesheets/screen.css (0.105s)
create src/stylesheets/style.css (0.066s)
Compilation took 0.381s
Done, without errors.
Completed in 54.906s at Wed Nov 13 2013 19:37:43 GMT+0900 (JST) - Waiting...
grunt compass すると、prod も実行されるため、dist/stylesheets/ 以下に compressed ファイルが書き出されます。
% grunt compass
Running "compass:dev" (compass) task
identical src/stylesheets/ie.css (0.063s)
identical src/stylesheets/print.css (0.001s)
identical src/stylesheets/screen.css (0.093s)
identical src/stylesheets/style.css (0.018s)
Compilation took 0.192s
Running "compass:prod" (compass) task
directory dist/stylesheets/
create dist/stylesheets/ie.css (0.004s)
create dist/stylesheets/print.css (0.001s)
create dist/stylesheets/screen.css (0.028s)
create dist/stylesheets/style.css (0.001s)
Compilation took 0.036s
Done, without errors.
だいぶ全体の動きが理解できてきました。