UNPKG

2.34 kBtext/coffeescriptView Raw
1path = require 'path'
2
3module.exports = (grunt) ->
4 require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks)
5
6 grunt.initConfig
7 pkg: grunt.file.readJSON('package.json')
8 regarde:
9 jasmine_node:
10 files: [
11 'src/**/*.coffee'
12 'spec/*.coffee'
13 'spec/**/*.json'
14 'spec/**/*.haml'
15 'spec/**/*.html'
16 ]
17 tasks: ['jasmine_node']
18 spawn: true
19 jasmine_node:
20 specNameMatcher: '_spec'
21 extensions: 'coffee'
22 projectRoot: '.'
23 replace:
24 version:
25 src: ['dist/compiler/hamlcoffee.js']
26 dest: 'dist/compiler/hamlcoffee.js'
27 replacements: [
28 {
29 from: "require('../package.json').version"
30 to: "'<%= pkg.version %>'"
31 }
32 ]
33 changelog:
34 src: ['CHANGELOG.md']
35 dest: 'CHANGELOG.md'
36 replacements: [
37 {
38 from: "## Master"
39 to: "## Version <%= pkg.version %>, <%= grunt.template.today('mmmm dd, yyyy') %>"
40 }
41 ]
42 uglify:
43 dist:
44 files:
45 'dist/compiler/hamlcoffee.min.js': ['dist/compiler/hamlcoffee.js']
46 release:
47 bump: false
48 file: 'package.json CHANGELOG.md dist/compiler/hamlcoffee.js dist/compiler/hamlcoffee.min.js'
49
50 # Use a custom task for using the latest v1 version of Browserify,
51 # since I don't like the current contraints in v2 like the need to
52 # have the `.coffee` extension within the require and that all paths
53 # are absolute.
54 #
55 grunt.registerTask 'browserify', 'Create the browser distribution', ->
56 browserify = require('browserify')()
57 browserify.ignore '../package.json'
58 browserify.ignore 'coffee-script'
59 browserify.require "#{ __dirname }/src/haml-coffee.coffee"
60 browserify.require "#{ __dirname }/src/hamlc.coffee"
61 grunt.file.write 'dist/compiler/hamlcoffee.js', browserify.bundle()
62
63 grunt.registerTask 'watch', [
64 'regarde'
65 ]
66
67 grunt.registerTask 'test', [
68 'jasmine_node'
69 ]
70
71 grunt.registerTask 'dist', 'Create the browser distribution', [
72 'browserify'
73 'replace:version'
74 'uglify:dist'
75 ]
76
77 grunt.registerTask 'publish', 'Publish a new version', [
78 'jasmine_node'
79 'dist'
80 'replace:changelog'
81 'release:patch'
82 ]
83
84 grunt.registerTask 'default', ['watch']