/bower_components/bootstrap-tokenfield/Gruntfile.js |
@@ -0,0 +1,200 @@ |
module.exports = function (grunt) { |
|
var semver = require('semver'), |
f = require('util').format; |
|
grunt.initConfig({ |
pkg: grunt.file.readJSON('package.json'), |
version: '<%= pkg.version %>', |
|
banner: [ |
'/*!', |
' * bootstrap-tokenfield <%= version %>', |
' * https://github.com/sliptree/bootstrap-tokenfield', |
' * Copyright 2013-2014 Sliptree and other contributors; Licensed MIT', |
' */\n\n' |
].join('\n'), |
|
copy: { |
dist: { |
files: { |
'dist/<%= pkg.name %>.js': 'js/<%= pkg.name %>.js' |
} |
}, |
assets: { |
files: [{ |
expand: true, |
flatten: true, |
src: [ |
'bower_components/bootstrap/js/affix.js', |
'bower_components/bootstrap/js/scrollspy.js', |
'bower_components/typeahead.js/dist/typeahead.bundle.min.js' |
], |
dest: 'docs-assets/js/' |
}] |
} |
}, |
|
uglify: { |
options: { |
banner: '<%= banner %>' |
}, |
dist: { |
files: { |
'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js' |
} |
}, |
docs: { |
files: { |
'docs-assets/js/docs.min.js': 'docs-assets/js/docs.js' |
} |
} |
}, |
|
less: { |
compile: { |
files: { |
'dist/css/<%= pkg.name %>.css': 'less/<%= pkg.name %>.less', |
'dist/css/tokenfield-typeahead.css': 'less/tokenfield-typeahead.less' |
} |
}, |
minify: { |
options: { |
cleancss: true, |
report: 'min' |
}, |
files: { |
'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css', |
'dist/css/tokenfield-typeahead.min.css': 'dist/css/tokenfield-typeahead.css' |
} |
} |
}, |
|
jekyll: { |
docs: {} |
}, |
|
watch: { |
copy: { |
files: 'js/**/*', |
tasks: ['copy'] |
}, |
less: { |
files: 'less/**/*', |
tasks: ['less'] |
}, |
jekyll: { |
files: ['dist/**/*', 'index.html', 'docs-assets/**/*'], |
tasks: ['uglify:docs', 'jekyll'] |
}, |
livereload: { |
options: { livereload: true }, |
files: ['dist/**/*'], |
} |
}, |
|
exec: { |
git_is_clean: { |
cmd: 'test -z "$(git status --porcelain)"' |
}, |
git_on_master: { |
cmd: 'test $(git symbolic-ref --short -q HEAD) = master' |
}, |
git_add: { |
cmd: 'git add .' |
}, |
git_commit: { |
cmd: function(m) { return f('git commit -m "%s"', m); } |
}, |
git_tag: { |
cmd: function(v) { return f('git tag v%s -am "%s"', v, v); } |
}, |
git_push: { |
cmd: 'git push && git push --tags' |
}, |
update_docs: { |
cmd: [ |
'git checkout gh-pages', |
'git reset master --hard', |
'sed -i.bak \'s/%VERSION%/v<%= version %>/\' index.html', |
'rm -rf index.html.bak', |
'git add index.html', |
'git commit -m "Update docs to <%= version %>"', |
'git checkout master' |
].join(' && ') |
}, |
npm_publish: { |
cmd: 'npm publish' |
} |
} |
|
}); |
|
grunt.loadNpmTasks('grunt-contrib-copy'); |
grunt.loadNpmTasks('grunt-contrib-uglify'); |
grunt.loadNpmTasks('grunt-contrib-less'); |
grunt.loadNpmTasks('grunt-contrib-watch'); |
grunt.loadNpmTasks('grunt-jekyll'); |
grunt.loadNpmTasks('grunt-sed'); |
grunt.loadNpmTasks('grunt-exec'); |
|
grunt.registerTask('manifests', 'Update manifests.', function(version) { |
var _ = grunt.util._, |
pkg = grunt.file.readJSON('package.json'), |
bower = grunt.file.readJSON('bower.json'), |
jqueryPlugin = grunt.file.readJSON('bootstrap-tokenfield.jquery.json'); |
|
bower = JSON.stringify(_.extend(bower, { |
name: pkg.name, |
version: version |
}), null, 2); |
|
jqueryPlugin = JSON.stringify(_.extend(jqueryPlugin, { |
name: pkg.name, |
title: pkg.name, |
version: version, |
author: pkg.author, |
description: pkg.description, |
keywords: pkg.keywords, |
homepage: pkg.homepage, |
bugs: pkg.bugs, |
maintainers: pkg.contributors |
}), null, 2); |
|
pkg = JSON.stringify(_.extend(pkg, { |
version: version |
}), null, 2); |
|
grunt.file.write('package.json', pkg); |
grunt.file.write('bower.json', bower); |
grunt.file.write('bootstrap-tokenfield.jquery.json', jqueryPlugin); |
}); |
|
grunt.registerTask('release', 'Ship it.', function(version) { |
var curVersion = grunt.config.get('version'); |
|
version = semver.inc(curVersion, version) || version; |
|
if (!semver.valid(version) || semver.lte(version, curVersion)) { |
grunt.fatal('invalid version dummy'); |
} |
|
grunt.config.set('version', version); |
|
grunt.task.run([ |
'exec:git_on_master', |
'exec:git_is_clean', |
'manifests:' + version, |
'build', |
'exec:git_add', |
'exec:git_commit:' + version, |
'exec:git_tag:' + version, |
'exec:update_docs' |
//'exec:git_push', |
//'exec:npm_publish', |
]); |
}); |
|
// Build task |
grunt.registerTask('build', ['copy', 'uglify', 'less']); |
} |