autotest_platform/app/static/minder/Gruntfile.js

202 lines
5.2 KiB
JavaScript

/* global require, module */
var path = require('path');
module.exports = function(grunt) {
'use strict';
// Load grunt tasks automatically
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-browser-sync');
grunt.loadNpmTasks('grunt-contrib-watch');
var pkg = grunt.file.readJSON('package.json');
var appConfig = {
app: require('./bower.json').appPath || 'app',
dist: 'dist'
};
var banner = '/*!\n' +
' * ====================================================\n' +
' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
'<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' +
' * GitHub: <%= pkg.repository.url %> \n' +
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>\n' +
' * ====================================================\n' +
' */\n\n';
var expose = '\nuse(\'expose-editor\');\n';
// Project configuration.
grunt.initConfig({
// Metadata.
pkg: pkg,
yeoman: appConfig,
clean: {
last: [
'.tmp',
'dist/*.js',
'dist/*.css',
'dist/*.css.map'
],
clstmp: ['.tmp']
},
// resolve dependence
dependence: {
options: {
base: 'src',
entrance: 'expose-editor'
},
merge: {
files: [{
src: [
'src/**/*.js'
],
dest: '.tmp/scripts/kityminder.editor.logic.js'
}]
}
},
// browser sync for dev
browserSync: {
bsFiles: {
dist: 'dist/css/*.css',
src: 'src/**'
},
options: {
server: {
baseDir: './',
index: 'index.html',
watchTask: true
}
}
},
// concat
concat: {
closure: {
options: {
banner: banner + '(function () {\n',
footer: expose + '})();'
},
files: {
'dist/kityminder.editor.js': [
'.tmp/scripts/kityminder.editor.logic.js',
'.tmp/scripts/kityminder.app.annotated.js',
'.tmp/scripts/templates.annotated.js',
'.tmp/scripts/service/*.js',
'.tmp/scripts/filter/*.js',
'.tmp/scripts/dialog/**/*.js',
'.tmp/scripts/directive/**/*.js'
]
}
}
},
uglify: {
options: {
banner: banner
},
minimize: {
files: [{
src: 'dist/kityminder.editor.js',
dest: 'dist/kityminder.editor.min.js'
}]
}
},
less: {
compile: {
options: {
sourceMap: true,
sourceMapURL: 'kityminder.editor.css.map',
sourceMapFilename: 'dist/kityminder.editor.css.map'
},
files: [{
dest: 'dist/kityminder.editor.css',
src: 'less/editor.less'
}]
}
},
cssmin: {
dist: {
files: {
'dist/kityminder.editor.min.css': 'dist/kityminder.editor.css'
}
}
},
ngtemplates: {
kityminderEditor: {
src: ['ui/directive/**/*.html', 'ui/dialog/**/*.html'],
dest: 'ui/templates.js',
options: {
htmlmin: {
collapseBooleanAttributes: true,
collapseWhitespace: true,
removeComments: true
}
}
}
},
// Automatically inject Bower components into the app
wiredep: {
dev: {
src: ['index.html'],
devDependencies: true
},
dist: {
src: ['dist/index.html']
}
},
// Copies remaining files to places other tasks can use
copy: {
dist: {
files: [{
expand: true,
cwd: 'ui',
src: 'images/*',
dest: 'dist'
}]
}
},
// ng-annotate tries to make the code safe for minification automatically
// by using the Angular long form for dependency injection.
ngAnnotate: {
dist: {
files: [{
expand: true,
cwd: 'ui/',
src: '**/*.js',
ext: '.annotated.js',
extDot: 'last',
dest: '.tmp/scripts/'
}]
}
}
});
// Build task(s).
grunt.registerTask('build', ['clean:last',
//'wiredep:dist',
'ngtemplates', 'dependence', 'ngAnnotate', 'concat', 'uglify', 'less', 'cssmin', 'copy', 'clean:clstmp']);
grunt.registerTask('dev', ['clean:last',
//'wiredep:dev',
'ngtemplates', 'dependence', 'ngAnnotate', 'concat', 'uglify', 'less', 'cssmin', 'copy', 'clean:clstmp', 'browserSync', 'watch']);
};