|
@@ -0,0 +1,135 @@
|
|
|
+module.exports = function(grunt) {
|
|
|
+ var L = grunt.log.writeln;
|
|
|
+ var BANNER = '/**\n' +
|
|
|
+ ' * Open Sheet Music Display library <%= pkg.version %> built on <%= grunt.template.today("yyyy-mm-dd") %>.\n' +
|
|
|
+ ' * Copyright (c) 2016 PhonicScore\n' +
|
|
|
+ ' *\n' +
|
|
|
+ ' * https://github.com/opensheetmusicdisplay/opensheetmusicdisplay\n' +
|
|
|
+ ' */\n';
|
|
|
+ var BUILD_DIR = 'build';
|
|
|
+ var RELEASE_DIR = 'releases';
|
|
|
+ var TARGET_RAW = BUILD_DIR + '/osmd.js';
|
|
|
+ var TARGET_MIN = BUILD_DIR + '/osmd-min.js';
|
|
|
+
|
|
|
+ var SOURCES = [ "src/source.js",
|
|
|
+ "src/*.js", "!src/header.js", "!src/container.js"];
|
|
|
+
|
|
|
+ grunt.initConfig({
|
|
|
+ pkg: grunt.file.readJSON('package.json'),
|
|
|
+ concat: {
|
|
|
+ options: {
|
|
|
+ banner: BANNER
|
|
|
+ },
|
|
|
+ build: {
|
|
|
+ src: SOURCES,
|
|
|
+ dest: TARGET_RAW
|
|
|
+ }
|
|
|
+ },
|
|
|
+ uglify: {
|
|
|
+ options: {
|
|
|
+ banner: BANNER,
|
|
|
+ sourceMap: true
|
|
|
+ },
|
|
|
+ build: {
|
|
|
+ src: SOURCES,
|
|
|
+ dest: TARGET_MIN
|
|
|
+ }
|
|
|
+ },
|
|
|
+ jshint: {
|
|
|
+ files: SOURCES,
|
|
|
+ options: {
|
|
|
+ eqnull: true, // allow == and ~= for nulls
|
|
|
+ sub: true, // don't enforce dot notation
|
|
|
+ trailing: true, // no more trailing spaces
|
|
|
+ globals: {
|
|
|
+ "Vex": false,
|
|
|
+ "Raphael": false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ scripts: {
|
|
|
+ files: ['src/*', 'Gruntfile.js'],
|
|
|
+ tasks: ['concat', 'jshint'],
|
|
|
+ options: {
|
|
|
+ interrupt: true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ copy: {
|
|
|
+ release: {
|
|
|
+ files: [
|
|
|
+ {
|
|
|
+ expand: true,
|
|
|
+ dest: RELEASE_DIR,
|
|
|
+ cwd: BUILD_DIR,
|
|
|
+ src : ['*.js', 'docs/**', '*.map']
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ docco: {
|
|
|
+ src: SOURCES,
|
|
|
+ options: {
|
|
|
+ layout: 'linear',
|
|
|
+ output: 'build/docs'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ gitcommit: {
|
|
|
+ releases: {
|
|
|
+ options: {
|
|
|
+ message: "Committing release binaries for new version: <%= pkg.version %>",
|
|
|
+ verbose: true
|
|
|
+ },
|
|
|
+ files: [
|
|
|
+ {
|
|
|
+ src: [RELEASE_DIR + "/*.js", RELEASE_DIR + "/*.map"],
|
|
|
+ expand: true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bump: {
|
|
|
+ options: {
|
|
|
+ files: ['package.json', 'component.json'],
|
|
|
+ commitFiles: ['package.json', 'component.json'],
|
|
|
+ updateConfigs: ['pkg'],
|
|
|
+ createTag: false,
|
|
|
+ push: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ release: {
|
|
|
+ options: {
|
|
|
+ bump: false,
|
|
|
+ commit: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clean: [BUILD_DIR, RELEASE_DIR],
|
|
|
+ });
|
|
|
+
|
|
|
+ // Load the plugin that provides the "uglify" task.
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-concat');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-uglify');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-jshint');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-watch');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-qunit');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-copy');
|
|
|
+ grunt.loadNpmTasks('grunt-contrib-clean');
|
|
|
+ grunt.loadNpmTasks('grunt-docco');
|
|
|
+ grunt.loadNpmTasks('grunt-release');
|
|
|
+ grunt.loadNpmTasks('grunt-bump');
|
|
|
+ grunt.loadNpmTasks('grunt-git');
|
|
|
+
|
|
|
+ // Default task(s).
|
|
|
+ grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'docco']);
|
|
|
+
|
|
|
+ grunt.registerTask('test', 'Run qunit tests.', function() {
|
|
|
+ grunt.task.run('qunit');
|
|
|
+ });
|
|
|
+
|
|
|
+ // Release current build.
|
|
|
+ grunt.registerTask('stage', 'Stage current binaries to releases/.', function() {
|
|
|
+ grunt.task.run('default');
|
|
|
+ grunt.task.run('copy:release');
|
|
|
+ });
|
|
|
+};
|