202 lines
5.2 KiB
JavaScript
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']);
|
|
}; |