123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- var semver = require('semver'),
- format = require('util').format;
- module.exports = function(grunt) {
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
- banner: [
- ' // ----------------------------------------------------------------------------',
- ' // <%= pkg.description %>',
- ' // v<%= pkg.version %> - released <%= grunt.template.today("yyyy-mm-dd HH:MM") %>',
- ' // Licensed under the MIT license.',
- ' // http://vegas.jaysalvat.com/',
- ' // ----------------------------------------------------------------------------',
- ' // Copyright (C) 2010-<%= grunt.template.today("yyyy") %> Jay Salvat',
- ' // http://jaysalvat.com/',
- ' // ----------------------------------------------------------------------------',
- '\n'
- ].join('\n'),
- jshint: {
- files: ['gruntfile.js', 'src/**/*.js']
- },
- uglify: {
- options: {
- banner: '<%= banner %>'
- },
- js: {
- options: {
- mangle: false,
- compress: false,
- beautify: true
- },
- src: 'src/jquery.vegas.js',
- dest: 'dist/jquery.vegas.js'
- },
- jsmin: {
- options: {
- mangle: true,
- compress: true
- },
- src: 'dist/jquery.vegas.js',
- dest: 'dist/jquery.vegas.min.js'
- }
- },
- cssmin: {
- minify: {
- src: 'src/jquery.vegas.css',
- dest: 'dist/jquery.vegas.min.css'
- }
- },
- exec: {
- publish: {
- cmd: [
- 'cp -r src/images dist/',
- 'cp -r src/overlays dist/',
- 'cp -r src/jquery.vegas.css dist/jquery.vegas.css',
- 'cp -r dist/ tmp/',
- 'cd tmp',
- 'zip -r vegas.zip *',
- 'cd -',
- 'git checkout gh-pages',
- 'rm -rf releases/latest/',
- 'cp -r tmp/ releases/<%= pkg.version %>/',
- 'cp -r tmp/ releases/latest/',
- 'git add -A releases/<%= pkg.version %>',
- 'git add -A releases/latest',
- 'git commit -m "Published v<%= pkg.version %>."',
- 'git push origin gh-pages',
- 'git checkout -',
- 'rm -rf tmp/'
- ].join(' && ')
- },
- gitFailIfDirty: {
- cmd: 'test -z "$(git status --porcelain)"'
- },
- gitAdd: {
- cmd: 'git add .'
- },
- gitCommit: {
- cmd: function(message) {
- return format('git commit -m "Build %s"', message);
- }
- },
- gitTag: {
- cmd: function(version) {
- return format('git tag v%s -am "%s"', version, version);
- }
- },
- gitPush: {
- cmd: [
- 'git push origin master',
- 'git push origin master --tags'
- ].join(' && ')
- }
- }
- });
- grunt.loadNpmTasks('grunt-exec');
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-cssmin');
- grunt.registerTask('build', ['jshint', 'uglify', 'cssmin']);
- grunt.registerTask('publish', ['exec:publish']);
- grunt.registerTask('default', ['build']);
- grunt.registerTask('release', 'Release lib.', function(version) {
- var pkg = grunt.file.readJSON('package.json');
- version = semver.inc(pkg.version, version) || version;
- if (!semver.valid(version) || semver.lte(version, pkg.version)) {
- grunt.fatal('Invalid version.');
- }
- pkg.version = version;
- grunt.config.data.pkg = pkg;
- grunt.task.run([
- 'exec:gitFailIfDirty',
- 'build',
- 'metadata:' + version,
- 'manifests:' + version,
- 'exec:gitAdd',
- 'exec:gitCommit:' + version,
- 'exec:gitTag:' + version,
- 'exec:gitPush',
- 'exec:publish'
- ]);
- });
- grunt.registerTask('manifests', 'Update manifests.', function(version) {
- var _ = grunt.util._,
- pkg = grunt.file.readJSON('package.json'),
- cpt = grunt.file.readJSON('component.json');
- if (!semver.valid(version)) {
- grunt.fatal('Invalid version');
- }
- pkg.version = version;
- cpt = JSON.stringify(_.extend(cpt,
- _.omit(pkg, 'dependencies', 'devDependencies')
- ), null, 2);
- pkg = JSON.stringify(pkg, null, 2);
- grunt.file.write('package.json', pkg);
- grunt.file.write('component.json', cpt);
- });
- grunt.registerTask('metadata', 'Create metadata file.', function(version) {
- var metadata = {
- 'date': grunt.template.today("yyyy-mm-dd HH:MM:ss"),
- 'version': version
- };
- grunt.file.write('dist/metadata.json', JSON.stringify(metadata, null, 2));
- });
- };
|