Forráskód Böngészése

Grunt refactoring. Added descriptions to tasks. Demo is now being built to build/demo/.

Signed-off-by: Sebastian Haas <sebastian@haas.tech>
Sebastian Haas 9 éve
szülő
commit
d78e35c0e7
3 módosított fájl, 57 hozzáadás és 48 törlés
  1. 49 42
      Gruntfile.js
  2. 3 3
      demo/index.html
  3. 5 3
      package.json

+ 49 - 42
Gruntfile.js

@@ -1,6 +1,7 @@
 /*global module*/
 module.exports = function (grunt) {
     'use strict';
+
     // The banner on top of the build
     var banner = '/**\n' +
         ' * Open Sheet Music Display <%= pkg.version %> built on <%= grunt.template.today("yyyy-mm-dd") %>.\n' +
@@ -12,11 +13,11 @@ module.exports = function (grunt) {
             'typings/index.d.ts',
             // Additional manual typings:
             'external/vexflow/vexflow.d.ts'
-            // 'typings/fft.d.ts'
-        ],
+        ];
+
     // Paths
-        src = ['src/**/*.ts'],
-        test = ['test/**/*.ts'];
+    var src = ['src/**/*.ts'];
+    var test = ['test/**/*.ts'];
 
     // Grunt configuration following:
     grunt.initConfig({
@@ -38,7 +39,7 @@ module.exports = function (grunt) {
             },
             demo: {
                 src: [].concat(typings, src, ['demo/inject.ts']),
-                dest: '<%= outputDir.build %>/osmd-demo.js',
+                dest: '<%= outputDir.build %>/demo/osmd-demo.js',
                 options: {
                     banner: "<%= banner %>",
                     browserifyOptions: {
@@ -86,14 +87,14 @@ module.exports = function (grunt) {
                     browsers: ['PhantomJS']
                 }
             },
-            debugWithFirefox: {
+            firefox: {
                 configFile: 'karma.conf.js',
                 options: {
                     singleRun: false,
                     browsers: ['Firefox']
                 }
             },
-            debugWithChrome: {
+            chrome: {
                 configFile: 'karma.conf.js',
                 options: {
                     singleRun: false,
@@ -113,8 +114,7 @@ module.exports = function (grunt) {
         // JsHint setup
         jshint: {
             all: [
-                'Gruntfile.js', 'karma.conf.js',
-                'submodules/**/*.json', 'submodules/**/*.js'
+                'Gruntfile.js', 'karma.conf.js', 'demo/**/*.js'
             ]
         },
         // TypeScript Type Definitions
@@ -126,7 +126,7 @@ module.exports = function (grunt) {
             build: {
                 options: {
                     module: 'commonjs',
-                    out: './build/docs',
+                    out: '<%= outputDir.build %>/docs',
                     name: 'opensheetmusicdisplay',
                     target: 'es5',
                     mode: 'file'
@@ -134,6 +134,12 @@ module.exports = function (grunt) {
                 src: ['./src/**/*.ts', './external/**/*.ts', './typings/**/*.ts']
             }
         },
+        // Typescript compilation for ES6 module (npm package)
+        ts: {
+          default : {
+            tsconfig: true
+          }
+        },
         // Cleaning task setup
         clean: {
             options: {
@@ -143,61 +149,62 @@ module.exports = function (grunt) {
                 src: [
                     '<%= outputDir.build %>',
                     '<%= outputDir.dist %>',
-                    // 'node_modules',
-                    // 'typings',
                     '.tscache',
-                    'src/**/*.js', 'test/**/*.js'
+                    'src/**/*.js', 'test/**/*.js' // if something went wrong, delete JS from TypeScript source directories
+                ]
+            }
+        },
+        copy: {
+            demo: {
+                files: [
+                    { src: ['*'], dest: '<%= outputDir.build %>/demo/sheets/', cwd: './test/data/', expand: true },
+                    { src: ['*.js', '*.css', '*.html'], cwd: './demo/', expand: true, dest: '<%= outputDir.build %>/demo/' }
                 ]
             }
         },
         // http-server
         'http-server': {
             'demo': {
-                root: '.',
+                root: 'demo',
                 port: 8000,
                 host: '0.0.0.0',
                 showDir : true,
                 autoIndex: true,
-                // server default file extension
-                // ext: 'html',
                 runInBackground: false,
-                openBrowser : true,
-                // customize url to serve specific pages
-                customPages: {
-                    '/': 'demo/demo.html'
-                }
+                openBrowser : true
             }
         }
 
     });
 
-    // Load Npm tasks
-    grunt.loadNpmTasks('grunt-karma');
-    grunt.loadNpmTasks('grunt-tslint');
-    grunt.loadNpmTasks('grunt-typings');
+    // Load npm tasks
     grunt.loadNpmTasks('grunt-browserify');
     grunt.loadNpmTasks('grunt-contrib-clean');
-    grunt.loadNpmTasks('grunt-contrib-watch');
+    grunt.loadNpmTasks('grunt-contrib-copy');
     grunt.loadNpmTasks('grunt-contrib-jshint');
     grunt.loadNpmTasks('grunt-contrib-uglify');
+    grunt.loadNpmTasks('grunt-contrib-watch');
     grunt.loadNpmTasks('grunt-http-server');
+    grunt.loadNpmTasks('grunt-karma');
+    grunt.loadNpmTasks('grunt-ts');
+    grunt.loadNpmTasks('grunt-tslint');
     grunt.loadNpmTasks('grunt-typedoc');
+    grunt.loadNpmTasks('grunt-typings');
+
+    // Code quality
+    grunt.registerTask('lint',        'Lints all JavaScript and TypeScript files.',  ['jshint', 'tslint']);
+
+    // Documentation
+    grunt.registerTask('docs',        'Builds class documentation to /build/docs',   ['typedoc']);
+
+    // Build tasks
+    grunt.registerTask('build:demo',  'Builds the demo.',                            ['browserify:demo', 'copy:demo']);
+    grunt.registerTask('build:test',  'Builds the tests',                            ['browserify:debug']);
+    grunt.registerTask('build:dist',  'Builds for distribution on npm and Bower.',   ['browserify:dist', 'uglify', 'ts']);
 
-    // Register tasks
-    grunt.registerTask('lint',      ['jshint', 'tslint']);
-    grunt.registerTask('start',     ['typings']);
-    grunt.registerTask('all',       ['typings', 'default']);
-    grunt.registerTask('default',   ['browserify', 'uglify']);
-    grunt.registerTask('npm-test',  ['typings', 'test']);
-    grunt.registerTask('docs',      ['typedoc']);
-    grunt.registerTask('test',      ['browserify:debug', 'lint', 'karma:ci']);
-    grunt.registerTask('fast-test', ['browserify:debug', 'karma:ci']);
-    grunt.registerTask('rebuild',   ['clean', 'default']);
-    grunt.registerTask('publish',   ['clean', 'typings', 'browserify:dist', 'uglify:bundle', 'docs']);
-    grunt.registerTask('debug-build', ['browserify:demo']);
-    grunt.registerTask('debug-browser', ['http-server:demo']);
+    // Tests
+    grunt.registerTask('test',        'Runs unit, regression and e2e tests.',        ['build:test', 'karma:ci']);
 
-    // Fix these in the future:
-    // grunt.registerTask('test debug Firefox', ['browserify:debug', 'karma:debugWithFirefox']);
-    // grunt.registerTask('test debug Chrome', ['browserify:debug', 'karma:debugWithChrome']);
+    // Default task (if grunt is run without any argument, used in contiuous integration)
+    grunt.registerTask('default',     'Default task, running all other tasks. (CI)', ['lint', 'test', 'docs', 'build:demo', 'build:dist']);
 };

+ 3 - 3
demo/demo.html → demo/index.html

@@ -2,9 +2,9 @@
 <html>
   <head>
     <title>OSMD Demo</title>
-    <script src="/build/osmd-demo.js"></script>
-    <script src="/demo/demo.js"></script>
-    <link href="/demo/demo.css" media="all" rel="stylesheet" />
+    <script src="osmd-demo.js"></script>
+    <script src="demo.js"></script>
+    <link href="demo.css" media="all" rel="stylesheet" />
   </head>
   <body>
     <h1>Open Sheet Music Display Demo</h1>

+ 5 - 3
package.json

@@ -5,9 +5,9 @@
   "main": "dist/src/OSMD/OSMD.js",
   "typings": "dist/src/OSMD/OSMD",
   "scripts": {
-    "test": "grunt npm-test",
-    "postinstall": "typings install",
-    "prepublish": "tsc && grunt publish"
+    "test": "grunt test",
+    "postinstall": "grunt typings",
+    "prepublish": "grunt build:dist"
   },
   "files": [
     "dist",
@@ -51,11 +51,13 @@
     "grunt": "^1.0.1",
     "grunt-browserify": "^5.0.0",
     "grunt-contrib-clean": "^1.0.0",
+    "grunt-contrib-copy": "^1.0.0",
     "grunt-contrib-jshint": "^1.0.0",
     "grunt-contrib-uglify": "^2.0.0",
     "grunt-contrib-watch": "^1.0.0",
     "grunt-http-server": "",
     "grunt-karma": "^2.0.0",
+    "grunt-ts": "^6.0.0-beta.3",
     "grunt-tslint": "^3.1.1",
     "grunt-typedoc": "^0.2.4",
     "grunt-typings": "^0.1.5",