module.exports = function (grunt) { 'use strict'; grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), version: { src: ['<%= pkg.exportName %>.js', '*.json'] }, jshint: { all: ['*.js', '!*.min.js'], options: { jshintrc: true } }, uglify: { options: { banner: '/*! <%= pkg.exportName %> <%= pkg.version %> - <%= pkg.license %> | <%= pkg.repository.url %> */\n' }, dist: { files: { '<%= pkg.exportName %>.min.js': ['<%= pkg.exportName %>.js'] } }, jquery: { files: { 'jquery.fn.sortable.min.js': 'jquery.fn.sortable.js' } } }, exec: { 'meteor-test': { command: 'meteor/runtests.sh' }, 'meteor-publish': { command: 'meteor/publish.sh' } }, jquery: {} }); grunt.registerTask('jquery', function (arg) { var fs = require('fs'), filename = 'jquery.fn.sortable.js'; grunt.log.oklns(filename); fs.writeFileSync( filename, (fs.readFileSync('jquery.binding.js') + '') .replace('/* CODE */', (fs.readFileSync('Sortable.js') + '') .replace(/^[\s\S]*?function[\s\S]*?(var[\s\S]+)\/\/\s+Export[\s\S]+/, '$1') ) ); if (arg === 'min') { grunt.task.run('uglify:jquery'); } }); grunt.loadNpmTasks('grunt-version'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-exec'); // Meteor tasks grunt.registerTask('meteor-test', 'exec:meteor-test'); grunt.registerTask('meteor-publish', 'exec:meteor-publish'); grunt.registerTask('meteor', ['meteor-test', 'meteor-publish']); grunt.registerTask('tests', ['jshint']); grunt.registerTask('default', ['tests', 'version', 'uglify:dist']); };