UNPKG

wavesurfer.js

Version:

Interactive navigable audio visualization using Web Audio and Canvas

196 lines (187 loc) 5.47 kB
/*global module:false*/ module.exports = function(grunt) { var path = require('path'); // Project configuration. grunt.initConfig({ // Metadata. pkg: grunt.file.readJSON('package.json'), banner: '/*! <%= pkg.title || pkg.name %> <%= pkg.version %>\n' + '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' + '* @license <%= pkg.license %> */', // Task configuration. concat: { options: { stripBanners: true }, dist: { src: [ 'src/wavesurfer.js', 'src/util.js', 'src/webaudio.js', 'src/mediaelement.js', 'src/drawer.js', 'src/drawer.*.js', 'src/html-init.js' ], dest: 'dist/wavesurfer.min.js' } }, connect: { options: { base: '.', port: 9000, // Change this to '0.0.0.0' to access the server from outside. hostname: 'localhost', keepalive: true }, }, commonjs: { modules: { banner: '<%= banner %>', cwd: 'dist', src: ['*.min.js'], dest: 'dist/wavesurfer.cjs.js' } }, amd: { modules: { banner: '<%= banner %>', cwd: 'dist', src: ['*.min.js'], dest: 'dist/wavesurfer.amd.js' } }, uglify: { options: { banner: '<%= banner %>' }, dist: { options: { sourceMap: 'dist/wavesurfer.min.js.map', sourceMapRoot: '/' }, src: '<%= concat.dist.src %>', dest: '<%= concat.dist.dest %>' }, plugins: { files: grunt.file.expandMapping(['plugin/*.js'], 'dist/', { rename: function(destBase, destPath) { var newPath = destBase + destPath.replace('.js', '.min.js'); return newPath; }, }) } }, jshint: { options: { curly: true, eqeqeq: false, eqnull: true, quotmark: "single", browser: true, // Missing "use strict" statement. strict: false, globals: { WaveSurfer: true }, }, ignore_warning: { options: { '-W004': true, // Expected an assignment or function call and instead saw an expression '-W030': true, // {a} used out of scope '-W038': true, // Use '!==' to compare with '' '-W041': true, '-W056': true, // Missing '()' invoking a constructor. '-W058': true, '-W079': true, // Use the function form of 'use strict' '-W097': true, }, src: ['<%= concat.dist.src %>', 'plugin/*.js', 'spec/*.spec.js'] }, }, jasmine: { core: { src: '<%= concat.dist.src %>', options: { specs: ['spec/*.spec.js'], vendor: [ 'node_modules/jasmine-expect/dist/jasmine-matchers.js' ] } }, coverage: { src: '<%= concat.dist.src %>', options: { specs: '<%= jasmine.core.options.specs %>', vendor: '<%= jasmine.core.options.vendor %>', template: require('grunt-template-jasmine-istanbul'), templateOptions: { coverage: 'coverage/coverage.json', report: [ { type: 'lcov', options: { dir: 'coverage/lcov' } }, { type: 'html', options: { dir: 'coverage/html' } }] } } } }, coveralls: { options: { force: true }, main_target: { src: 'coverage/lcov/lcov.info' } } }); // ========================================================================== // TASKS // ========================================================================== grunt.registerMultiTask('commonjs', 'Wrap .js files for commonjs.', function () { this.files.forEach(function(file) { return file.src.map(function(filepath) { var original = grunt.file.read(path.join(file.cwd, filepath)); return grunt.file.write(file.dest, file.banner + '\n' + original + '\nmodule.exports = WaveSurfer;'); }); }); }); grunt.registerMultiTask('amd', 'Wrap .js files for AMD.', function () { this.files.forEach(function(file) { return file.src.map(function(filepath) { var definePath = (filepath.replace(/\.\w+$/, '')), original = grunt.file.read(path.join(file.cwd, filepath)); return grunt.file.write(file.dest, file.banner + '\ndefine(function () {\n' + original + '\nreturn WaveSurfer;\n});'); }); }); }); // These plugins provide necessary tasks. grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-jasmine'); grunt.loadNpmTasks('grunt-coveralls'); grunt.loadNpmTasks('grunt-contrib-connect'); // Default task. grunt.registerTask('default', ['jshint', 'test', 'coverage', 'concat', 'commonjs', 'amd', 'uglify']); // Dev grunt.registerTask('dev', ['concat', 'uglify', 'connect']); grunt.registerTask('test', ['jasmine:core']); grunt.registerTask('coverage', ['jasmine:coverage']); };