44uk
9/8/2013 - 7:29 AM

Gruntfile.coffee を書いてみた

Gruntfile.coffee を書いてみた

# grunt install grunt-contrib --save-dev
# grunt install grunt-bower-task --save-dev

'use strict'

excludes = [
  '!**/.DS_Store'
  '!**/Thumbs.db'
  '!**/*.coffee'
  '!**/*.map'
  '!**/*.scss'
  '!**/*.sass'
  '!**/*.less'
  '!**/coffee/'
  '!**/sass/'
  '!**/less/'
  '!**/_notes/'
  '!**/.idea/'
  '!**/.gitignore'
  '!**/*.mno'
  '!**/Templates/'
  '!**/Library'
  '!**/*.dwt'
  '!**/*.lbi'
]

module.exports = (g) ->
  pkg = g.file.readJSON('package.json')

  g.initConfig
    bower:
      install:
        options:
          targetDir: 'src/vendor/<%= dir.js %>/'
          layout: 'byType'
          install: true
          verbose: false
          cleanTargetDir: false
          cleanBowerDir: false

    dir:
      src: "src"
      build: "build"
      js: "assets/js"
      coffee: "assets/coffee"
      css: "assets/css"
      sass: "assets/sass"
      img: "assets/img"
      bower: "bower_components"

    clean:
      build:
        src: [
          "<%= dir.build %>/<%= dir.js %>/*"
          "<%= dir.build %>/<%= dir.css %>/*"
          "<%= dir.build %>/<%= dir.img %>/*"
        ]

    imagemin:
      assets:
        optimizationLevel: 3
        files: [
          expand: true
          src: '<%= dir.src %>/<%= dir.img %>/**/*.{png,jpg,jpeg}'
        ]

    coffee:
      compile:
        files:[
          sourceMap: true
          expand: true
          cwd: '<%= dir.src %>/<%= dir.coffee %>/'
          dest: '<%= dir.src %>/<%= dir.js %>/'
          src: ['**/*.coffee']
          ext: '.js'
        ]

    sass:
      compile:
        files:[
          unixNewlines: true
          expand: true
          style: 'expanded'
          cwd: '<%= dir.src %>/<%= dir.sass %>/'
          dest: '<%= dir.src %>/<%= dir.css %>/'
          src: ['**/*.sass']
          ext: '.css'
        ]

    copy:
      build:
        expand: true
        filter: "isFile"
        cwd: "<%= dir.src %>"
        src: ["**"].concat(excludes)
        dest: "<%= dir.build %>"

    watch:
      html:
        files: [
          '<%= dir.src %>/**/*.html'
        ]
        options:
          livereload: true
      coffee:
        files: [
          'Gruntfile'
          '<%= dir.src %>/<%= dir.coffee %>/**/*.coffee'
        ]
        tasks: [
          'coffee:compile'
        ]
        options:
          livereload: true
      sass:
        files: [
          '<%= dir.src %>/<%= dir.sass %>/**/*.sass'
        ]
        tasks: [
          'sass:compile'
        ]
        options:
          livereload: true

    connect:
      dev:
        options:
          port: 9000
          base: '<%= dir.src %>'
          livereload: true
      prod:
        options:
          port: 9000
          base: '<%= dir.build %>'
          livereload: true



  g.loadNpmTasks 'grunt-bower-task'
  g.loadNpmTasks 'grunt-contrib'

  g.registerTask 'default', ['connect:dev', 'watch']
  g.registerTask 'build', ['imagemin', 'coffee', 'sass', 'clean:build', 'copy']
  g.registerTask 'img', 'imagemin'