Skip to content

Instantly share code, notes, and snippets.

@schmiddim
Created August 3, 2016 18:33
Show Gist options
  • Save schmiddim/0b1977404746daf8504eb37fa9902d44 to your computer and use it in GitHub Desktop.
Save schmiddim/0b1977404746daf8504eb37fa9902d44 to your computer and use it in GitHub Desktop.
Grunt
// Grunt tasks
module.exports = function (grunt) {
"use strict";
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
banner: '/*!\n' +
'* <%= pkg.name %> - v<%= pkg.version %> - MIT LICENSE <%= grunt.template.today("yyyy-mm-dd") %>. \n' +
'* @author <%= pkg.author %>\n' +
'*/\n',
clean: {
dist: ['src']
},
jshint: {
options: {
jshintrc: '.jshintrc'
},
gruntfile: {
src: 'Gruntfile.js'
},
app: {
src: ['app/modules/**/*.js']
}
},
exec: {
bowerInstaller: 'bower-installer'
},
concat: {
options: {
banner: '<%= banner %>',
stripBanners: false
},
base: {
src: [
// Angular Project Dependencies,
'app/app.js',
'app/app.config.js',
'app/modules/**/*Module.js',
'app/modules/**/*Route.js',
'app/modules/**/*Ctrl.js',
'app/modules/**/*Service.js',
'app/modules/**/*Directive.js'
],
dest: 'app/assets/js/<%= pkg.name %>-appbundle.js'
},
build: {
src: [
// Angular Project Dependencies,
'app/assets/libs/angular/angular.js',
'app/assets/libs/**/*.js'
],
dest: 'app/assets/js/<%= pkg.name %>-angularbundle.js'
}
},
uglify: {
options: {
banner: '<%= banner %>',
report: 'min'
},
base: {
src: ['<%= concat.base.dest %>'],
dest: 'app/assets/js/<%= pkg.name %>-angscript.min.js'
},
basePlugin: {
src: [ 'src/plugins/**/*.js' ],
dest: 'app/assets/js/plugins/',
expand: true,
flatten: true,
ext: '.min.js'
}
},
connect: {
server: {
options: {
keepalive: true,
port: 4000,
base: '.',
hostname: 'localhost',
debug: true,
livereload: true,
open: true
}
}
},
concurrent: {
tasks: ['connect', 'watch'],
options: {
logConcurrentOutput: true
}
},
watch: {
app: {
files: '<%= jshint.app.src %>',
tasks: ['jshint:app'],
options: {
livereload: true
}
}
},
injector: {
options: {},
dev: {
files: {
'index.html': [
'bower.json',
'app/app.js',
'app/app.config.js',
'app/**/*Module.js',
'app/**/*Route.js',
'app/**/*Ctrl.js',
'app/**/*Service.js',
'app/**/*Directive.js'
]
}
},
production: {
files: {
'index.html': [
'app/assets/css/**/*.css',
'app/assets/js/*.js'
]
}
}
},
ngtemplates: {
app: {
src: 'app/modules/**/*.html',
dest: 'app/assets/js/templates.js',
options: {
module: '<%= pkg.name %>',
root: 'app/',
standAlone: false
}
}
}
});
require('time-grunt')(grunt);
require('load-grunt-tasks')(grunt);
// Making grunt default to force in order not to break the project if something fail.
grunt.option('force', true);
// Register grunt tasks
grunt.registerTask("build", [
"jshint",
"exec",
"concat",
"ngtemplates",
"injector:production",
"concurrent",
"clean"
]);
// Development task(s).
grunt.registerTask('dev', ['injector:dev', 'concurrent']);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment