console.log(‘blog’) | puts ‘blog’

JavascriptとかRubyとか

HamlとSassをよしなに変換してくれるGruntfileを書いた

HamlとSassを勉強しています。普通にHTMLとCSSで書けばいいものをなぜわざわざツールを覚える必要があるのか?と疑問で今までやってきませんでしたが、やってみると便利ですね。この手の技術は基本的に難しいことはなく、ひたすら書きまくって慣れるしかないです。

HamlやSassを書きまくっていると、どうしてもコマンドラインを打つ手間が面倒くさくなってきます。GruntとかGulpとか流行っているのが体感的に分かりました。今からだとGulpの方がいいのかもしれませんが、Watchされて手間が少なくなれば目的を満たせるので、情報量も多いGruntで自動化してみました。CoffeeScriptでGruntfileが書けたので「もうこれでいいじゃん!」ってな感じでGulpを試すモチベーションがあまり湧きませんでした。一応、CoffeeScriptのタスクやJavascriptのテストのタスクも追加してみました。HamlとSassに慣れたらCoffeeScriptでjQueryのコードをシンプル化してみようと思っております。

https://github.com/kanjihtmt/frontend

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
module.exports = (grunt) ->
  pkg = grunt.file.readJSON 'package.json'
  grunt.initConfig
    coffeelint:
      app:
        files:
          src: [
            'Gruntfile.coffee',
            'src/**/*.coffee',
            'test/**/*.coffee'
          ]
    simplemocha:
      all:
        src: ['test/**/*.coffee']
        options:
          ui: 'bdd'
    coffee:
      compile:
        files: [
           expand: true,
           cwd: 'src',
           src: '*.coffee',
           dest: 'js',
           ext: '.js'
        ]
    haml:
      dist:
        files: [
          expand: true,
          cwd: 'haml',
          src: '*.haml',
          dest: '.',
          ext: '.html'
        ]
    sass:
      dist:
        options:
          style: 'expanded'
        files: [
          expand: true,
          cwd: 'sass',
          src: ['*.scss'],
          dest: 'css',
          ext: '.css'
        ]
    watch:
      css:
        files: 'sass/*.scss'
        tasks: ['sass']
      haml:
        files: 'haml/*.haml'
        tasks: ['haml']
      scripts:
        files: [
          'src/**/*.coffee',
          'test/**/*.coffee',
        ]
        tasks: [
          'coffeelint',
          'coffee'
          'simplemocha'
        ]

  for t of pkg.devDependencies
    if t.substring(0, 6) is 'grunt-'
      grunt.loadNpmTasks t

  grunt.registerTask 'default', ['watch']

まだminifyや画像のリサイズなどのタスクは書いてません。Gruntfileはこれから徐々に育てていこうと思っております。(もしかしたらGulpに移行する気になるかもしれません) これを使って連休中は、レスポンシブデザインの学習のためSassとHamlを書きまくろうかと思ってます。